サーバー変数: $_SERVER
注: PHP 4.1.0 以降のバージョンで使用されます。以前のバージョンでは、$HTTP_SERVER_VARS が使用されていました。
$_SERVER は、ヘッダー、パス、スクリプトの場所などを含む配列です。配列のエンティティは Web サーバーによって作成されます。すべてのサーバーがすべてのメッセージを生成するという保証はありません。サーバーは一部のメッセージを無視したり、以下にリストされていない新しいメッセージを生成したりする可能性があります。これは、これらの変数の多くが CGI 1.1 仕様で指定されているため、注意深く検討する必要があることを意味します。
これは「スーパーグローバル」、または自動グローバル変数として説明できます。これは、すべてのスクリプトで機能することを意味します。 $HTTP_SERVER_VARS の場合のように、関数またはメソッド内でアクセスするためにグローバル $_SERVER を使用する必要はありません。
$HTTP_SERVER_VARS には同じ情報が含まれていますが、自動グローバル変数ではありません。 (注: $HTTP_SERVER_VARS と $_SERVER は異なる変数であり、PHP はそれらを異なる方法で処理します。)
register_globals ディレクティブが設定されている場合、つまり $_SERVER 配列と $HTTP_SERVER_VARS 配列が分離されている場合、これらの変数はすべてのスクリプトでも使用できます。関連情報については、「レジスタ グローバルの使用」のセキュリティ関連の章を参照してください。これらの個々のグローバル変数は、自動グローバル変数ではありません。
以下にリストされている $_SERVER 要素の一部が使用できない場合があります。コマンドラインから PHP を実行する場合、以下にリストされている要素はほとんど有効ではない (または実質的な意味がない) ことに注意してください。
「PHP_SELF」
ドキュメントルートに関連する、現在実行中のスクリプトのファイル名。たとえば、URL アドレス http://example.com/test.php/foo.bar を持つスクリプトで $_SERVER['PHP_SELF'] を使用すると、結果は /test.php/foo.bar になります。
PHP がコマンド ラインから実行される場合、この変数は効果がありません。
"argv"
このスクリプトに渡されるパラメータ。スクリプトがコマンド ライン モードで実行されると、argv 変数が C スタイルのコマンド ライン引数としてプログラムに渡されます。 GET メソッドが呼び出されると、この変数には要求されたデータが含まれます。
"argc"
プログラムに渡されるコマンド ライン引数の数が含まれます (コマンド ライン モードで実行している場合)。
「ゲートウェイ_インターフェース」
サーバーが使用する CGI 仕様のバージョン。たとえば、「CGI/1.1」です。
「SERVER_NAME」
スクリプトが現在実行されているサーバーホストの名前。スクリプトが仮想ホスト上で実行されている場合、名前はその仮想ホストに設定された値によって決まります。
「サーバー_ソフトウェア」
リクエストに対する応答のヘッダーに指定されているサーバーを識別する文字列。
「サーバー_プロトコル」
ページをリクエストするときに使用される通信プロトコルの名前とバージョン。たとえば、「HTTP/1.0」です。
「REQUEST_METHOD」
ページにアクセスする際のリクエストメソッド。例: 「GET」、「HEAD」、「POST」、「PUT」。
「QUERY_STRING」
クエリの文字列。
「DOCUMENT_ROOT」
現在実行中のスクリプトが配置されているドキュメントのルート ディレクトリ。サーバー構成ファイルで定義されます。
「HTTP_ACCEPT」
現在のリクエストの Accept: ヘッダーの内容。
"HTTP_ACCEPT_CHARSET"
現在のリクエストの Accept-Charset: ヘッダーの内容。例: 「iso-8859-1,*,utf-8」。
「HTTP_ACCEPT_ENCODING」
現在のリクエストの Accept-Encoding: ヘッダーの内容。例:「gzip」。
「HTTP_ACCEPT_LANGUAGE」
現在のリクエストの Accept-Language: ヘッダーの内容。例:「エン」。
「HTTP_CONNECTION」
現在のリクエストの Connection: ヘッダーの内容。例:「キープアライブ」。
「HTTP_HOST」
現在のリクエストの Host: ヘッダーの内容。