通常、PHPからHTTPステータスヘッダを送信する場合、HTTPヘッダを次のように送信します。
header("HTTP/1.0 404 Not Found");
しかし、 PHPマニュアルでは、FCGIホストの場合、 FCGIモジュールによってHTTPヘッダーに変換される
“Status”ヘッダー:
header("Status: 404 Not Found");
私はWindows 7のマシンでmod_fcgiを使用してPHPでapache 2.2を実行しており、
header( "HTTP/1.0 404 Not Found");
を使用してヘッダを送信するとうまくいくようです。
最近変わったのですか? FCGIホスト用の Status
ヘッダを送信する必要がありますか?他のプラットフォーム(solaris、linux)や他のWebサーバ(nginx、lighttp)でも誰でもこれを確認できますか?
cgi.rfc2616_headersオプションを有効にしない限り、
‘ステータス’スタイルのヘッダーを使用する必要はないと思います。
The description of that option is http://php.net/manual/en/ini.core.php
“HTTP応答を送信する際に使用するヘッダの種類をPHPに伝えます コード。
0に設定されている場合、PHPはStatus:ヘッダを送信します。
Apacheと他のWebサーバー。このオプションを1に設定すると、PHPは »RFC
2616に準拠したヘッダーを送信します。あなたが知らない限り、0に設定しておいてください
あなたがやっていること。 “
基本的にはHTTPスタイルのヘッダをPHPに送り、PHPは必要に応じてこれらを
‘ステータス’スタイルのヘッダに変換します。何年かの間にこれらがどちらかが間違って変換されたか、または複数の
‘ステータス’ヘッダが一度に送られたバグが多かったようです –
しかし、これらのバグはすべて今修正されているようです。ですから、HTTPスタイルのヘッダを設定してPHPに変換させるだけで安全だと思います。
また、私はヘッダをテストして送信しました( “HTTP/1.0 404 Not Found”);
FastCGIを使用して私の開発環境で正常に動作します。