PHP 4.1.0 以降、 外部から来る変数 を取得するのに推奨される方法は以下に述べるスーパーグローバルを 用いることです。それまでは、 register_globals または定義済みの PHP 配列($HTTP_*_VARS)に 依存していました。 PHP 5.0.0 以降、PHP の長い 定義済みの変数 配列は register_long_arrays ディレクティブにより無効にすることができます。
注意: 4.1.0 で導入されました。これ以前のバージョンでは、 $HTTP_SERVER_VARS を使用してください。
$_SERVER は、ヘッダ、パス、スクリプトの位置のような 情報を有する配列です。この配列のエントリは、Web サーバにより 生成されます。全ての Web サーバがこれら全てを提供する保障はありません。 サーバは、これらのいくつかを省略したり、この一覧にない他のものを 定義する可能性があります。これらの変数の多くは、 » CGI 1.1 specification で定義されています。したがって、これらについては定義されていることを 期待することができます。
これは、'スーパーグローバル(superglobal)'、または自動グローバル (automatic global)、変数です。これは、スクリプトの全てのスコープで 利用可能であることを意味します。関数やメソッドの中からこの変数に アクセスする際に $HTTP_SERVER_VARS のように global $_SERVER; とする必要はありません。
$HTTP_SERVER_VARS の最初の情報は同じですが、 スーパーグローバルではありません (HTTP_SERVER_VARS と $_SERVER は異なる変数であり、 PHP は異なる変数として処理を行うことに注意してください)。
register_globals ディレクティブを設定した場合、これらの変数は、スクリプトの グローバルスコープ、つまり配列 $_SERVER 及び $HTTP_SERVER_VARS 以外のグローバル変数として 利用可能となります。関連情報については、 register_globals の使用法 という名前のセキュリティに関する章を参照ください。 これらの各グローバル変数は、スーパーグローバルではありません。
以下の各要素のいくつかは $_SERVER に現れない可能性があります。PHP をコマンドラインで実行している場合には、 使用できるものは僅かであることに注意してください。
注意: リクエストのメソッドが HEAD だった場合、 PHP スクリプトはヘッダを送信した後(言い換えれば、 出力バッファリングを行わずに全出力を処理した後)に終了します。
注意: Web サーバがこの値を生成できるように設定されている必要があります。 例えば Apache の場合 HostnameLookups On が httpd.conf に設定されていなければこの値は生成されません。 gethostbyaddr() もご覧ください。
現在実行されているスクリプトの絶対パス
注意: file.php あるいは ../file.php のような相対パスを指定して CLI でスクリプトが実行されている場合、 $_SERVER['SCRIPT_FILENAME'] には ユーザが指定した相対パスが含まれます。
注意: PHP 4.3.2 以降、PATH_TRANSLATED は、 Apache 2 SAPI において暗黙のうちに設定されなく なりました。一方、Apache 1 では、この値が Apache により設定されない場合、 SCRIPT_FILENAME と同じ値に設定されます。 この変更は、PATH_TRANSLATED は PATH_INFO が定義されている場合のみ 存在するべきであるという CGI の規約を満たすために 行われました。 Apache 2 ユーザは、PATH_INFO を定義するために httpd.conf の中で AcceptPathInfo = On を使用することが可能です。
注意: 4.1.0 で導入されました。これ以前のバージョンの場合は、 $HTTP_ENV_VARS を使用してください。
これらの変数は PHP パーサが実行されている環境から PHP のグローバル名前空間に取り込まれます。 その多くは、PHP が実行されているシェルに由来するものであり、 システムが違えばシェルも違ってくるため、確定的なリストを 得ることは不可能です。定義されている環境変数のリストについては 使用しているシェルのドキュメントをご覧ください。
PHP がサーバモジュールとして実行されているか CGI プロセッサとして 実行されているかに関わらず、その他の環境変数は CGI 変数を含みます。
これは'スーパーグローバル'又は自動グローバルな変数です。 つまり、スクリプトの全てのスコープで有効な変数であるということです。 $HTTP_ENV_VARS を使うときそうするように、 この変数に関数やメソッドの中からアクセスする際に global $_ENV; のようにする必要はありません。
$HTTP_ENV_VARS は同じ情報を持っていますが、 これはスーパーグローバルではありません($HTTP_ENV_VARS と $_ENV は違う変数であり、PHP はそれぞれ別に扱います)。
register_globals が オンにセットされている場合、これらの変数はグローバルスコープ で有効となります。例えば、$_ENV と $HTTP_ENV_VARS 配列は分けられます。 関連する情報として、 Using Register Globals というセキュリティの章をご覧ください。 個々のグローバルはスーパーグローバルではありません。
注意: 4.1.0 で導入されました。これ以前のバージョンの場合は、 $HTTP_GET_VARS を使用してください。
カレントのスクリプトから HTTP GET を通して渡された情報が 格納された連想配列。自動的にどのスコープでもグローバルとなります。
これは'スーパーグローバル'又は自動グローバルな変数です。 つまり、スクリプトの全てのスコープで有効な変数であるということです。 $HTTP_GET_VARS を使うときにそうするように、 この変数に関数やメソッドの中からアクセスする際に global $_GET; のようにする必要はありません。
$HTTP_GET_VARS は同じ情報を持っていますが、 これはスーパーグローバルではありません (HTTP_GET_VARS と $_GET は違う変数であり、PHPはそれぞれ別に扱います)。
register_globals が オンにセットされている場合、これらの変数はグローバルスコープで 有効となります。例えば、$_GET と $HTTP_GET_VARS 配列は分けられます。 関連する情報として、 Using Register Globals というセキュリティの章をご覧ください。 個々のグローバルはスーパーグローバルではありません。
注意: 4.1.0 で導入されました。これ以前のバージョンの場合は、 $HTTP_POST_VARS を使用してください。
カレントのスクリプトから HTTP POST を通して渡された情報が 格納された連想配列。自動的にどのスコープでもグローバルとなる。
これは'スーパーグローバル'又は自動グローバルな変数です。 つまり、スクリプトの全てのスコープで有効な変数であるということです。 $HTTP_POST_VARS を使うときにそうするように、 この変数に関数やメソッドの中からアクセスする際に global $_POST; のようにする必要はありません。
$HTTP_POST_VARS は同じ情報を持っていますが、 これはスーパーグローバルではありません (HTTP_POST_VARS と $_POST は違う変数であり、PHPはそれぞれ別に扱います)。
register_globals が オンにセットされている場合、これらの変数はグローバルスコープで 有効となります。例えば、$_POST と $HTTP_POST_VARS 配列は分けられます。 関連する情報として、 Using Register Globals というセキュリティの章をご覧ください。 個々のグローバルはスーパーグローバルではありません。
注意: 4.1.0 で導入されました。これ以前のバージョンの場合は、 $HTTP_POST_FILES を使用してください。
カレントのスクリプトから HTTP POST メソッドを通してアップロードされた 情報が格納された連想配列。自動的にどのスコープでもグローバルとなります。
これは'スーパーグローバル'又は自動グローバルな変数です。 つまり、スクリプトの全てのスコープで有効な変数であるということです。 $HTTP_POST_FILES を使うときにそうするように、 この変数に関数やメソッドの中からアクセスする際に global $_FILES; のようにする必要はありません。
$HTTP_POST_FILES は同じ情報を持っていますが、 これはスーパーグローバルではありません ($HTTP_POST_FILES と $_FILES は異なる変数であり、PHP はこれらを異なる変数として扱うことに注意してください)。
register_globals が オンにセットされている場合、これらの変数はグローバルスコープで 有効となります。例えば、$_FILES と $HTTP_POST_FILES 配列は分けられます。 関連する情報として、 Using Register Globals というセキュリティの章をご覧ください。 個々のグローバルはスーパーグローバルではありません。
注意: 4.1.0 で導入されました。以前のバージョンには、同等な配列はありません。
$_GET, $_POST, $_COOKIE, $_FILES の内容を格納した連想配列
これは'スーパーグローバル'又は自動グローバルな変数です。 つまり、スクリプトの全てのスコープで有効な変数であるということです。 この変数に関数やメソッドの中からアクセスする際に global $_FILES; のようにする必要はありません。
register_globals が オンにセットされている場合、これらの変数はグローバルスコープでn 有効となります。例えば、$_REQUEST 配列は分けられます。 関連する情報として、 Using Register Globals というセキュリティの章をご覧ください。 個々のグローバルはスーパーグローバルではありません。
注意: 4.1.0 で導入されました。これ以前のバージョンでは、 $HTTP_SESSION_VARS を使用してください。
現在のスクリプトで有効なセッション情報が格納された配列です。 使用法の詳細については セッション処理関数を ご覧ください。
これは'スーパーグローバル'又は自動グローバルな変数です。 つまり、スクリプトの全てのスコープで有効な変数であるということです。 $HTTP_SESSION_VARS を使うときにそうするように、 この変数に関数やメソッドの中からアクセスする際に global $_SESSION; のようにする必要はありません。
$HTTP_SESSION_VARS は同じ情報を格納していますが、 スーパーグローバルではありません ($HTTP_SESSION_VARS と $_SESSION は異なる変数であり、PHP はこれらを異なる変数として扱うことに注意してください)。
register_globals が オンにセットされている場合、これらの変数はグローバルスコープで 有効となります。例えば、$_SESSION と $HTTP_SESSION_VARS 配列は分けられます。 関連する情報として、 Using Register Globals というセキュリティの章をご覧ください。 個々のグローバルはスーパーグローバルではありません。
注意: $GLOBALS は、PHP 3.0.0 以降で利用可能です。
カレントのスクリプト上でグローバルスコープで定義されている全ての 変数を格納した連想配列。変数の名前は配列のキー。
これは'スーパーグローバル'又は自動グローバルな変数です。 つまり、スクリプトの全てのスコープで有効な変数であるということです。 この変数に関数やメソッドの中からアクセスする際に global $_GLOBALS; のようにする必要はありません。
$php_errormsg は、PHP によって発せられた 最後のエラーメッセージのテキストを格納する変数です。 エラーが発生したスコープ内、かつ track_errors 設定オプションが オン(デフォルトはオフ)にセットされている場合にのみ有効です。
$HTTP_RAW_POST_DATA には生の POST データが格納されます。 always_populate_raw_post_data を参照ください。
配列 $http_response_header は get_headers() 関数の結果と同等です。 HTTP ラッパー を使用する時には、 $http_response_header に HTTP レスポンスヘッダが格納されます。 response headers.