PHPは、実行する全てのスクリプトに定義済みの多くの変数を 提供します。しかし、これらの変数の多くは、 実行するサーバーの種類、サーバーのバージョンおよび設定、 その他の要素に依存しており、完全に記述することはできません。 これらの変数のいくつかはPHPをコマンドラインで実行した場合には 利用できません。
これらの要因はあるものの、Apache 1.3.6のデフォルトインストールを 行い、PHP 3をモジュールとしてデフォルトインストールを行った状態で 定義済みの変数のリストを以下に示します。
全ての定義済み変数のリスト(そして他の多くの有益な情報)については、 phpinfo()を参照(および使用)ください。
注意 このリストは、網羅的なものでも網羅的にしようとするものでもありません。 どんな定義済みの変数に自分のスクリプトからアクセス可能と期待できる のかに関するガイドラインであるに過ぎません。
これらの変数は、Apache Webサーバーにより 作成されるものです。他のWebサーバーを実行している場合には、 同じ変数が提供される保証はありません。いくつかの変数が 省略されたり、このリストにない別の変数が提供されている 可能性があります。このリストにある変数の多くは、 CGI 1.1の規約に記述されており、他の Webサーバーでも利用可能であると期待することができます。
数は少ないですが、これらの変数のいくつかはPHPをコマンドラインで実 行している時のみ利用可能(または意味がある)であるということに注意 して下さい。
サーバーが使用するCGI 規約のリビジョン。例えば、'CGI/1.1'。
現在のスクリプトが実行されているサーバーホストの名前。 スクリプトが仮想ホストで実行されている場合、その仮想ホストに関して 定義された値となります。
サーバーのIDを表す文字列。リクエストに応答する際に、ヘッダに 表示されます。
リクエストされたページを送信する際のプロトコルの名前及びリビジョン。 すなわち、'HTTP/1.0'。
ページにアクセスする際に使用されるリクエストメソッドの種類。 すなわち、'GET','HEAD', 'POST', 'PUT'。
クエリー文字列。または、ページがアクセスされたパス。
現在のスクリプトが実行されているサーバーのドキュメントルートディレクトリ。 サーバーの設定ファイルで定義されています。
現在のリクエストにおけるAccept:ヘッダーの内容。 ただし、該当するヘッダーがある場合のみ定義されます。
現在のリクエストにおけるAccept-Charset:ヘッダー の内容。ただし、該当するヘッダーがある場合のみ定義されます。例えば、 'iso-8859-1,*,utf-8'。
現在のリクエストにおけるAccept-Encoding:ヘッ ダーの内容。ただし、該当するヘッダーがある場合のみ定義されま す。例えば、'gzip'。
現在のリクエストにおけるAccept-Language:ヘッダーの内容。 ただし、該当するヘッダーがある場合のみ定義されます。例えば、'en'。
現在のリクエストにおけるConnection:ヘッダーの内容。 ただし、該当するヘッダーがある場合のみ定義されます。例えば、'Keep-Alive'。
現在のリクエストにおけるHost:ヘッダーの内容。 ただし、該当するヘッダーがある場合のみ定義されます。
ブラウザから現在のページを参照する際のページアドレス。 この変数は、ユーザーのブラウザにより設定されます。全てのブラウザが この変数を設定するわけではありません。
現在のリクエストにおいてUser_Agent:ヘッダーが 定義されている場合にはその内容。これは、現在のページを見るために 使用されているブラウザソフトウエアを示す文字列です。すなわち、 Mozilla/4.5 [en] (X11; U; Linux 2.2.9 i586) となります。 例えば、ページの機能をユーザーのブラウザの能力に合わせるために get_browser()にこの値を指定することが可能です。
現在のページを見ているユーザーのIPアドレス。
Webサーバーと通信するユーザーのマシンで使用されているポート。
現在実行中のスクリプトの絶対パス。
(Apacheの場合、)Webサーバーの設定ファイルでSERVER_ADMIN ディレクティブに指定された値。 スクリプトが仮想ホストで実行されている場合、その仮想ホストに関して 値が定義されます。
Webサーバーで使用されているサーバーマシンの通信用ポート。 デフォルトの設定では、'80'となります。 例えば、SSLを使用している場合、セキュアHTTPポートの番号により この値は変化します。
サーバーのバージョンおよび仮想ホスト名を含む文字列。 この文字列は、サーバーが生成したページに追加されます。ただし、 これが行われるのは、この機能を有効にした場合です。
サーバーが仮想的なパスを実際のパスへ変換した後で、 現在のスクリプトの(ドキュメントルートではなく)ファイルシステムに 基づくパス。
現在のスクリプトのパスを有します。自分自身を指す必要があるページ では便利です。
このページにアクセスするために指定されたURI。 例えば、'/index.html'。
これらの変数は、PHPパーサが実行されている環境からPHPのグローバル 変数領域にインポートされます。その多くは、PHPを実行したシェルによ り提供されたものであり、システムが異なると恐らくシェルの種類も異 なるので、固定したリストを示すことはできません。定義済みの環境変 数のリストについては、使用するシェルのドキュメントを参照下さい。
CGI変数を含む他の環境変数は、PHPがサーバーモジュールとして実行さ れているのか、CGIプロセッサとして実行されているのかによらず設定さ れます。
これらの変数は、PHP自体により作成されます。変数 $HTTP_*_VARS は、 設定 track_vars がオンの場 合にのみ利用可能です。有効にした場合、この変数は、空の配列である 場合でも、常に設定されます。これにより、悪意のあるユーザがこれら の変数に不正な値を入力することを防止します。
注意 PHP 4.0.3以降では、設定ファイルの設定によらずtrack_vars は常に on です。
ディレクティブ register_globals が設定され ていた場合、これらの変数もスクリプトのグローバルスコープ、すなわ ち、配列 $HTTP_*_VARSから利用可能です。 この機能は、注意して使用する必要があり、可能ならばオフにする必要 があります。$HTTP_*_VARS 変数は安全ですが、等 価な裸のグローバル変数は恐らくは悪意をもったユーザ入力で上書きさ れる可能性があります。 register_globals をオフにできない場合、使用するデータが安全であることを保証する何 らかのステップが必要となります。
スクリプトに渡される引数の配列。スクリプトがコマンドラインで 実行された場合、これにより、C言語の形式でコマンドラインのパラ メータにアクセスすることができます。GETメソッドでコールされた 場合、この配列にはクエリー文字列が含まれます。
スクリプトに渡されたコマンドラインパラメータの数を有しています。 (コマンドラインで実行された場合)
現在実行しているスクリプトのドキュメントルートに相対パスで表し たファイル名。PHPがコマンドラインプロセッサとして実行されてい る場合、この変数は利用できません。
HTTPクッキーにより現在のスクリプトに渡された変数を有する連想配 列です。
HTTP GETメソッドにより現在のスクリプトに渡された変数を有する 連想配列です。
HTTP POSTメソッドによりカレントのスクリプトの渡された変数を有 する連想配列です。
HTTP POSTメソッドによりアップロードされたファイルに関する情報 を有する連想配列。$HTTP_POST_FILESの内容に 関する情報については、POSTメソッドによるア ップロードを参照下さい。
$HTTP_POST_FILESはPHP 4.0.0以降でのみ使用 可能です。
上位環境からカレントのスクリプトに渡された変数の連想配列。
HTTPサーバーからカレントのスクリプトに渡された変数の連想配列。 これらの変数は、前記のApache変数と類似のものです。