定義済の変数

PHP 4.1.0 以降、 外部から来る変数 を取得するのに推奨される方法は以下に述べるスーパーグローバルを 用いることです。それまでは、 register_globals または定義済みのPHP配列($HTTP_*_VARS)に 依存していました。 PHP 5.0.0以降、PHPの長い 定義済みの変数 配列はregister_long_arrays ディレクティブにより無効にすることができます。

サーバ変数: $_SERVER

注意: 4.1.0で導入されました。これ以前のバージョンでは、 $HTTP_SERVER_VARSを使用して下さい。

$_SERVER は、ヘッダ、パス、スクリプトの位置の ような情報を有する配列です。この配列のエントリは、Webサーバにより 生成されます。全てのWebサーバがこれら全てを提供する保障はありませ ん。サーバは、これらのいくつかを省略したり、この一覧にない他のも のを定義する可能性があります。これらの変数の多くは、 CGI 1.1 specificationで定義さ れています。したがって、これらについては定義されていることを期待 することができます。

これは、'スーパーグローバル(superglobal)'、または自動グローバル (automatic global)、変数です。これは、スクリプトの全てのスコープ で利用可能であることを意味します。関数やメソッドの中からこの変数 にアクセスする際に $HTTP_SERVER_VARS のように global $_SERVER; とする必要はありません。

$HTTP_SERVER_VARS の最初の情報は同じですが、 autoglobalではありません。(HTTP_SERVER_VARS$_SERVERは異なる変数であり、PHPは異なる変数と して処理を行うことに注意して下さい)

register_globals ディ レクティブを設定した場合、これらの変数は、スクリプトのグローバル スコープ、つまり、配列 $_SERVER 及び $HTTP_SERVER_VARS 以外のグローバル変数として 利用可能となります。関連情報については、 register_globalsの使用法 という名前のセキュリティに関する章を参照下さい。 これらの各グローバル変数は、autoglobalではありません。

以下の各要素のいくつかは $_SERVER に現れない可能性があります。PHP をコマンドラインで実行している場合には、使用できるものは僅かである ことに注意して下さい。

'PHP_SELF'

現在実行しているスクリプトのファイル名です。ドキュメントルートから 取得されます。例えば、http://example.com/test.php/foo.bar というアドレス上にあるスクリプトでは$_SERVER['PHP_SELF']/test.php/foo.barとなります。

PHPがコマンドラインから実行される場合にはこの変数は使用できません。

'argv'

スクリプトに渡された引数の配列です。スクリプトがコマンドライン から実行された場合、C言語スタイルでコマンドライン引数にアクセス することができます。GETメソッドを通してコールされた場合には 検索引数が格納されます。

'argc'

スクリプトに渡された引数の数が格納されます(コマンドライン上で 実行された場合)。

'GATEWAY_INTERFACE'

サーバーが使用しているCGIのバージョンです。 例 'CGI/1.1'

'SERVER_NAME'

現在のスクリプトが実行されているサーバーのホスト名です。 スクリプトがバーチャルホスト上で実行されている場合は そのバーチャルホスト名となります。

'SERVER_SOFTWARE'

レスポンスヘッダ上に書かれている、サーバーの 認識文字列です。

'SERVER_PROTOCOL'

ページがリクエストされた際のプロトコル名とバージョンです。 例.'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:ヘッダが もしあればその内容。例: 'en'

'HTTP_CONNECTION'

現在のリクエストにConnection:ヘッダが もしあればその内容。例: 'Keep-Alive'

'HTTP_HOST'

現在のリクエストにHost:ヘッダが もしあればその内容。

'HTTP_REFERER'

現在のページに遷移する前にユーザーエージェントが参照していた ページのアドレス(もしあれば)。これはユーザーエージェントに よってセットされます。全てのユーザーエージェントがこれをセットし ているわけではなく、また、HTTP_REFERERを 変更する機能を持つものもああります。要するに信頼するべきものでは ありません。

'HTTP_USER_AGENT'

現在のリクエストにUser_Agent:ヘッダが もしあればその内容。ページにアクセスしてきているユーザーエージェント のしるしの文字列です。典型的な例は、 Mozilla/4.5 [en] (X11; U; Linux 2.2.9 i586)。たとえば、 get_browser()でこの値を使って ページの出力をそのブラウザにあわせたものにすることもでき るでしょう。

'REMOTE_ADDR'

現在ページをみているユーザーのIPアドレス

'REMOTE_HOST'

The Host name from which the user is viewing the current page. The reverse dns lookup is based off the REMOTE_ADDR of the user. 現在のページにアクセスしているホスト名。DNSの逆引き検索は ユーザーのREMOTE_ADDRに基づいています。

注意: Webサーバーがこの値を生成できるように設定されている必要があります。 例えばApacheの場合HostnameLookups Onhttpd.conf に設定されていなければこの値は生成されません。 gethostbyaddr()もご覧ください。

'REMOTE_PORT'

ユーザーのマシンからWebサーバへの通信に使用されているポート番号

'SCRIPT_FILENAME'

現在実行されているスクリプトの絶対パス

'SERVER_ADMIN'

Webサーバの設定ファイルのSERVER_ADMIN (Apacheの場合)ディレクティブ にセットされている値。スクリプトがバーチャルホスト上で 実行されている場合、バーチャルホストに対して値が定義されます。

'SERVER_PORT'

Webサーバの通信ポートとして使用されているポート番号。デフォルトでは '80';だが、例えばSSLを使用している場合は セキュアHTTPポートとして設定されている値によって違う。

'SERVER_SIGNATURE'

サーバ上で生成されたページに追加される、 サーバーのバージョン名とバーチャルホスト名の文字列。 Webサーバの設定で有効になっていることが必要。

'PATH_TRANSLATED'

バーチャルからリアルへのマッピングがなされた後の、 現在のスクリプトのファイルシステム上(ドキュメントルートではなく) でのパス。

'SCRIPT_NAME'

現在のスクリプトのパス。 スクリプト自身のページを指定するのに有用。

'REQUEST_URI'

ページにアクセスするために指定されたURI。例えば、 '/index.html'

'PHP_AUTH_USER'

PHPをApacheのモジュールとして実行している場合に、 HTTP認証しているときにそのユーザー名がセットされる。

'PHP_AUTH_PW'

PHPをApacheのモジュールとして実行している場合に、 HTTP認証しているときにそのユーザーのパスワードがセットされる。

'AUTH_TYPE'

PHPをApacheのモジュールとして実行している場合に、 HTTP認証しているときにその認証形式がセットされる。

環境変数: $_ENV

注意: 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 というセキュリティの章をご覧ください。 個々のグローバルは自動グローバルではありません。

HTTPクッキー: $_COOKIE

注意: 4.1.0で導入されました。これ以前のバージョンの場合は、 $HTTP_COOKIE_VARSを使用して下さい。

カレントのスクリプトから渡されたHTTPクッキーの情報が 格納された連想配列。

これは'スーパーグローバル'又は自動グローバルな変数です。 つまり、スクリプトの全てのスコープで有効な変数であるということです。 $HTTP_COOKIE_VARSを使うときにそうするように、 この変数に関数やメソッドの中からアクセスする際に global $_COOKIE;のようにする必要はありません。

$HTTP_COOKIE_VARSは同じ情報を持っていますが、 これは自動グローバルではありません。 (HTTP_COOKIE_VARS$_COOKIE は違う変数であり、PHPはそれぞれ別に扱います)

register_globalsが オンにセットされている場合、これらの変数はグローバルスコープ で有効となります。例えば、$_COOKIE$HTTP_COOKIE_VARS配列は分けられます。 関連する情報として、 Using Register Globals というセキュリティの章をご覧ください。 個々のグローバルは自動グローバルではありません。

HTTP GET 変数: $_GET

注意: 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 というセキュリティの章をご覧ください。 個々のグローバルは自動グローバルではありません。

HTTP POST 変数: $_POST

注意: 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 というセキュリティの章をご覧ください。 個々のグローバルは自動グローバルではありません。

HTTPファイルアップロード変数: $_FILES

注意: 4.1.0で導入されました。これ以前のバージョンの場合は、 $HTTP_POST_FILESを使用して下さい。

カレントのスクリプトからHTTP POSTメソッドを通してアップロードされた 情報が格納された連想配列。自動的にどのスコープでもグローバルとなる。

これは'スーパーグローバル'又は自動グローバルな変数です。 つまり、スクリプトの全てのスコープで有効な変数であるということです。 $HTTP_POST_FILESを使うときにそうするように、 この変数に関数やメソッドの中からアクセスする際に global $_FILES;のようにする必要はありません。

$HTTP_POST_FILESは同じ情報を持っていますが、 これは自動グローバルではありません。

register_globalsが オンにセットされている場合、これらの変数はグローバルスコープ で有効となります。例えば、$_FILES$HTTP_POST_FILES配列は分けられます。 関連する情報として、 Using Register Globals というセキュリティの章をご覧ください。 個々のグローバルは自動グローバルではありません。

リクエスト変数: $_REQUEST

注意: 4.1.0で導入されました。以前のバージョンには、同等な配列はありませ ん。

$_GET, $_POST, $_COOKIE, $_FILES の内容を格納した連想配列

これは'スーパーグローバル'又は自動グローバルな変数です。 つまり、スクリプトの全てのスコープで有効な変数であるということです。 この変数に関数やメソッドの中からアクセスする際に global $_FILES;のようにする必要はありません。

register_globalsが オンにセットされている場合、これらの変数はグローバルスコープ で有効となります。例えば、$_REQUEST 配列は分けられます。 関連する情報として、 Using Register Globals というセキュリティの章をご覧ください。 個々のグローバルは自動グローバルではありません。

セッション変数: $_SESSION

注意: 4.1.0で導入されました。これ以前のバージョンでは、 $HTTP_SESSION_VARSを使用して下さい。

現在のスクリプトで有効なセッション情報が格納された配列です。 使用法の詳細については セッション処理関数を ご覧ください。

これは'スーパーグローバル'又は自動グローバルな変数です。 つまり、スクリプトの全てのスコープで有効な変数であるということです。 $HTTP_SESSION_VARSを使うときにそうするように、 この変数に関数やメソッドの中からアクセスする際に global $_SESSION;のようにする必要はありません。

$HTTP_SESSION_VARSは同じ情報を格納しています が、自動グローバルではありません。

register_globalsが オンにセットされている場合、これらの変数はグローバルスコープ で有効となります。例えば、$_SESSION$HTTP_SESSION_VARS配列は分けられます。 関連する情報として、 Using Register Globals というセキュリティの章をご覧ください。 個々のグローバルは自動グローバルではありません。

グローバル変数: $GLOBALS

注意: $GLOBALSは、PHP 3.0.0以降で利用可能です。

カレントのスクリプト上でグローバルスコープで定義されている全ての 変数を格納した連想配列。変数の名前は配列のキー。

これは'スーパーグローバル'又は自動グローバルな変数です。 つまり、スクリプトの全てのスコープで有効な変数であるということです。 この変数に関数やメソッドの中からアクセスする際に global $_GLOBALS;のようにする必要はありません。

直近のエラーメッセージ: $php_errormsg

$php_errormsgは、PHPによって発せられた 最後のエラーメッセージのテキストを格納する変数です。 エラーが発生したスコープ内で、かつ、track_errors設定オプションが オン(デフォルトはオフ)にセットされている場合にのみ有効です。