PHPは、実行する全てのスクリプトに定義済みの多くの変数を 提供します。しかし、これらの変数の多くは、 実行するサーバーの種類、サーバーのバージョンおよび設定、 その他の要素に依存しており、完全に記述することはできません。 これらの変数のいくつかは、PHPを コマンドライン で実行した場合には利用できません。 これらの変数の一覧については、 予約済みの定義済みの変数 のセクションを参照してください。
PHP 4.2.0以降では、PHPディレクティブ register_globalsの デフォルト値がoffに変更されています。 これは、PHPにおける大きな変更です。 register_globalsをoffにすると、 グローバルスコープに定義済みの変数に影響を与えます。 例えば、DOCUMENT_ROOTを取得するには、 $DOCUMENT_ROOTのかわりに $_SERVER['DOCUMENT_ROOT']を使用することに なります。また、URL http://www.example.com/test.php?id=3 から $idの代わりに$_GET['id']、 $HOMEのかわりに$_ENV['HOME']を 使用します。
この変更に関する情報については、 register_globalsに関する設定 エントリ、セキュリティに関する章の register_globalsの使用、 また、» 4.1.0および » 4.2.0の Release Announcementsを参照してください。
スーパーグローバル 配列のようなPHPの予約済みの定義済み変数を使用することが 推奨されます。
バージョン4.1.0以降、PHPに(使用する場合)Webサーバ、環境変数、 ユーザ入力からの変数を値とする定義済みの配列が追加されています。 これらの新しいは配列は、自動グローバル、すなわち、自動的に全ての スコープで利用可能です。このため、これらは "スーパーグローバル" といわれることもあります。 (PHPには、ユーザ定義のスーパーグローバルという機構はありません。) スーパーグローバルのリストを以下に示します。 しかし、これらの内容のリストおよび定義済みのPHP変数とそれらの特性に 関する更なる議論については、 定義済みの予約変数の セクションを参照してください。 より古い定義済みの変数($HTTP_*_VARS)もまだ 存在します。 PHP 5.0.0 以降、PHP の長い 定義済みの変数 配列は register_long_arrays ディレクティブにより無効にすることができます。
注意: 可変変数
可変変数として スーパーグローバルを使うことはできません。
注意:
スーパーグローバルと HTTP_*_VARS は同時に存在させることができますが、 お互い同一ではありません。つまり、一方を変更してももう一方はそのままです。
variables_orderに ある変数が設定されていない場合、これらに対応するPHPの定義済み 変数も空のままとなります。