こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

ヘッダーは500エラー、ブラウザでは表示OKの場合

現在PHPで外部からのGET値を受信し、受信に成功した場合「OK」と出力しレスポンス200、失敗の場合はレスポンス500を返すプログラムを設置しているのですが、先日サーバー移転をしたところ、

http://www.hoge.com/sample.php?id=1

ブラウザげGET値を含むURLを叩くと問題なくOKと表示されるのですがヘッダーのみで送信をするとレスポンスが「Status: HTTP/1.0 500 Internal Server Error」となってしまいます。

これはなぜでしょうか?

試しにPHP(sample.php)のトップに明示的に「header("HTTP/1.0 200 OK");」と書いてみましたがこれでもやはりレスポンスは「500エラー」でした。

ブラウザで叩くと正しく表示され、レスポンスが500を返してしまうことについて解決方法などありましたらアドバイス等よろしくお願いいたします。

投稿日時 - 2011-09-01 03:04:03

QNo.6981447

困ってます

質問者が選んだベストアンサー

以下のようなプログラムを書いていらっしゃるのでしょうか。

<?php
if(isset($_GET['id'])){
// 受信に成功したら
header('HTTP/1.0 200 OK');
echo "OK\n";
}else{
header('HTTP/1.0 500 Internal Server Error');
}
exit;


> ヘッダーのみで送信をすると

ブラウザではないプログラムからリクエストするということでしょうか?

print_r($_GET); などとしてどのような値を受信できているか確認してみてはどうでしょうか。


> 試しにPHP(sample.php)のトップに明示的に「header("HTTP/1.0 200 OK");」と
> 書いてみましたがこれでもやはりレスポンスは「500エラー」でした。


トップより後で header("HTTP/1.0 500 Internal Server Error"); を
書いていれば、そちらで上書きされると思います。

http://php.net/manual/ja/function.header.php
> オプションのパラメータ replace は、ヘッダが 前に送信された類似のヘッダを置換するか、
> または、同じ形式の二番目の ヘッダを追加するかどうかを指定します。
> デフォルトでは、この関数は 置換を行ないますが、二番目の引数に FALSE を指定すると、
> 同じ型の 複数のヘッダを強制的に生成します。

投稿日時 - 2011-09-01 06:33:44

ANo.1

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問