PHP には、多数の事前定義変数が用意されています。多くの変数は実行中のサーバーのバージョンや設定、その他の要因に依存するため、詳細なドキュメントは利用できません。一部の定義済み変数は、PHP をコマンド ラインから実行した場合には有効になりません。
警告
PHP 4.2.0 以降のバージョンでは、PHP ディレクティブ register_globals のデフォルト値は off です。これは PHP に対する大きな変更です。 register_globals を off に設定すると、事前定義された変数セットのグローバルな可用性に影響します。たとえば、DOCUMENT_ROOT の値を取得するには、$DOCUMENT_ROOT の代わりに $_SERVER['DOCUMENT_ROOT'] を使用する必要があります。別の例として、URL http://www から $id の代わりに $_GET['id'] を使用します。 .example.com/test .php?id=3 の ID 値を取得するか、$HOME の代わりに $_ENV['HOME'] を使用して環境変数 HOME の値を取得します。
スーパーグローバル配列などの PHP 定義済み変数を使用するのが最善です。
PHP 4.1.0 以降、PHP は、Web サーバー (利用可能な場合)、ランタイム環境、およびユーザー入力からのデータを含む、事前に決定された配列変数の追加セットを提供します。これらの配列は、自動的にグローバルに、つまりどのスコープでも自動的に有効になるという点で非常に特殊です。したがって、それらはオートグローバルまたはスーパーグローバルと呼ばれることがよくあります。 (PHP にはユーザー定義のスーパーグローバル変数のメカニズムはありません。) スーパーグローバル変数は以下にリストされていますが、その内容と、PHP の事前定義変数とその性質の詳細については、「事前定義変数」を参照してください。さらに、古い事前定義配列 ($HTTP_*_VARS) がまだ存在していることにも気づくでしょう。 PHP 5.0.0 以降、long 型の PHP 定義済み変数配列は register_long_arrays 設定オプションを使用して無効にできます。
注: 可変変数
スーパー グローバル変数は、関数またはクラス メソッドで可変変数として使用できません。
注:
スーパーグローバル変数と HTTP_*_VARS は同時に存在しますが、これらは同じ変数ではないため、一方の値を変更しても他方には影響しません。
variables_order の一部の変数が設定されていない場合、対応する PHP 定義済み配列も空になります。