2012-01-11 33 views
5

PHPからHTTPステータスヘッダを送信する際に通常、1はこのようなHTTPヘッダを送信します:FCGIのステータス:404が見つかりませんでしたか?

header("HTTP/1.0 404 Not Found"); 

しかし、PHP manualはFCGIホストのために、1はその「状態」ヘッダを送信する必要があるだろうと述べていますその後、FCGIモジュールによってHTTPヘッダに変換されています。私は、Windows 7マシンでmod_fcgiを使用してPHPとApacheの2.2を実行して使用してヘッダーを送信しています

header("Status: 404 Not Found"); 

だけheader("HTTP/1.0 404 Not Found");正常に動作するようです。

最近変更されたことはありますか? FCGIホストにはまだStatusヘッダーを送信する必要がありますか?他のプラットフォーム(solaris、linux)や他のWebサーバ(nginx、lighttp)でも誰でもこれを確認できますか?

答えて

3

オプション「cgi.rfc2616_headers」が有効になっていない限り、「ステータス」スタイルのヘッダーを使用する必要はないと思います。

そのオプションの説明がhttp://php.net/manual/en/ini.core.php

「HTTPレスポンス コードを送信する際にどのようなヘッダのタイプを使用してPHPに指示し、それが0に設定されています場合は、PHPは、ステータスを送信している:。 のApacheでサポートされているヘッダこのオプションが1に設定されている場合、PHPは を送ります»RFC 2616に準拠したヘッダーを送ります。 あなたがやっていることを知らない限り、0に設定しておいてください。

基本的にHTTPスタイルヘッダをPHPに送信し、PHPは必要に応じてこれらを 'ステータス'スタイルヘッダに変換します。何年かの間にこれらがどちらかが間違って変換されたか、または複数の 'ステータス'ヘッダが一度に送られたバグが多かったようです - しかし、これらのバグはすべて今修正されているようです。ですから、HTTPスタイルのヘッダを設定してPHPに変換させるだけで安全だと思います。

また、ヘッダー(「HTTP/1.0 404 Not Found」)をテストして送信しました。 FastCGIを使用して私の開発環境で正常に動作します

関連する問題