2

HTTP 応答コード (または HTTP 応答ヘッダーの最初の行) が PHP の$_SERVER変数配列で利用できないのはなぜですか?

それはサーバー テクノロジの機能の制限ですか? PHPの制限?HTTPプロトコルで?それとも、HTTP 応答コードが必要になるのは完全に NUTS でしょうか? ;)

私の場合、Apache2 を使用しています。

ちょっと興味があるんだけど。

編集 1:サーバーの応答が送信される前に、 Apache の LogFormat ディレクティブで使用される%>s( LAST 要求のステータス) に相当するものについて問い合わせています。

編集 2:答えは完全に理にかなっていますが、サーバーの内部作業応答コードを取得できないのはなぜですか? を設定するErrorDocument 403 /index.phpと、 で応答コードにアクセスできます$_SERVER['REDIRECT_STATUS']。もっと簡単な方法はありませんか?私はそうではないと思います。しかし、私はまだあなたの答えから多くを学びました. それは理にかなっている。

apache_response_headers()もありますが、動作する応答コード/最初の行はまだ好きではありません。

4

3 に答える 3

9

HTTP 応答はクライアントに送信されるものであり、header関数を使用して PHP 内で変更できるためです。これは、PHP 内で自動的に処理されるものではなく、PHP に渡される前にサーバー (つまり、Apache) によって処理されます。

于 2012-10-20T19:04:36.213 に答える
0

$_SERVER には、http リクエストのすべてのデータ、ヘッダー、および現在のファイルのパスなどのその他の情報が含まれています。ただし、応答ではありません。スクリプトは、応答にアクセスするのではなく、応答を作成することを目的としています。

http://php.net/manual/en/reserved.variables.server.php

于 2012-10-20T19:07:47.303 に答える
0

ヘッダー関数で設定しない場合、ステータスコードは常に200成功応答であり、致命的なエラーの場合、php はそれを500(Internal Server Error) に変更する場合があります。

他のほとんどすべてのステータスは、スクリプトにリクエストを渡すことなく、Web サーバーによって処理されます。

于 2012-10-20T19:37:12.493 に答える