定義済みの変数

PHPは、実行する全てのスクリプトに定義済みの多くの変数を 提供します。しかし、これらの変数の多くは、 実行するサーバーの種類、サーバーのバージョンおよび設定、 その他の要素に依存しており、完全に記述することはできません。 これらの変数のいくつかはPHPをコマンドラインで実行した場合には 利用できません。

これらの要因はあるものの、Apache 1.3.6のデフォルトインストールを 行い、PHP 3をモジュールとしてデフォルトインストールを行った状態で 定義済みの変数のリストを以下に示します。

全ての定義済み変数のリスト(そして他の多くの有益な情報)については、 phpinfo()を参照(および使用)ください。

注意 このリストは、網羅的なものでも網羅的にしようとするものでもありません。 どんな定義済みの変数に自分のスクリプトからアクセス可能と期待できる のかに関するガイドラインであるに過ぎません。

Apache により設定される変数

これらの変数は、Apache Webサーバーにより 作成されるものです。他のWebサーバーを実行している場合には、 同じ変数が提供される保証はありません。いくつかの変数が 省略されたり、このリストにない別の変数が提供されている 可能性があります。このリストにある変数の多くは、 CGI 1.1の規約に記述されており、他の Webサーバーでも利用可能であると期待することができます。

数は少ないですが、これらの変数のいくつかはPHPをコマンドラインで実 行している時のみ利用可能(または意味がある)であるということに注意 して下さい。

$GATEWAY_INTERFACE

サーバーが使用するCGI 規約のリビジョン。例えば、'CGI/1.1'。

$SERVER_NAME

現在のスクリプトが実行されているサーバーホストの名前。 スクリプトが仮想ホストで実行されている場合、その仮想 ホストに関して定義された値となります。

$SERVER_SOFTWARE

サーバーのIDを表す文字列。リクエストに応答する際に、 ヘッダに表示されます。

$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_USER_AGENT

現在のリクエストにおいてUser_Agent:ヘッダーが 定義されている場合にはその内容。これは、現在のページを見るために 使用されているブラウザソフトウエアを示す文字列です。すなわち、 Mozilla/4.5 [en] (X11; U; Linux 2.2.9 i586) となります。 例えば、ページの機能をユーザーのブラウザの能力に合わせるために get_browser()にこの値を指定することが可能です。

$REMOTE_ADDR

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

$REMOTE_PORT

Webサーバーと通信するユーザーのマシンで使用されているポート。

$SCRIPT_FILENAME

現在実行中のスクリプトの絶対パス。

$SERVER_ADMIN

(Apacheの場合、)Webサーバーの設定ファイルでSERVER_ADMIN ディレクティブに指定された値。 スクリプトが仮想ホストで実行されている場合、その仮想ホストに関して 値が定義されます。

$SERVER_PORT

Webサーバーで使用されているサーバーマシンの通信用ポート。 デフォルトの設定では、'80'となります。 例えば、SSLを使用している場合、セキュアHTTPポートの番号により この値は変化します。

$SERVER_SIGNATURE

サーバーのバージョンおよび仮想ホスト名を含む文字列。 この文字列は、サーバーが生成したページに追加されます。ただし、 これが行われるのは、この機能を有効にした場合です。

$PATH_TRANSLATED

サーバーが仮想的なパスを実際のパスへ変換した後で、 現在のスクリプトの(ドキュメントルートではなく)ファイルシステムに 基づくパス。

$SCRIPT_NAME

現在のスクリプトのパスを有します。自分自身を指す必要があるページ では便利です。

$REQUEST_URI

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

環境変数

これらの変数は、PHPパーサが実行されている環境からPHPのグローバル 変数領域にインポートされます。その多くは、PHPを実行したシェルによ り提供されたものであり、システムが異なると恐らくシェルの種類も異 なるので、固定したリストを示すことはできません。定義済みの環境変 数のリストについては、使用するシェルのドキュメントを参照下さい。

CGI変数を含む他の環境変数は、PHPがサーバーモジュールとして実行さ れているのか、CGIプロセッサとして実行されているのかによらず設定さ れます。

PHP により定義される変数

これらの変数は、PHP自体により作成されます。変数 $HTTP_*_VARS は、 設定 track_vars がオンの場 合にのみ利用可能です。有効にした場合、この変数は、空の配列である 場合でも、常に設定されます。これにより、悪意のあるユーザがこれら の変数に不正な値を入力することを防止します。

注意 PHP 4.0.3以降では、設定ファイルの設定によらずtrack_vars は常に on です。

注意 "スーパーグローバル"な変数はPHP 4.1.0で追加されました。詳細については 4.1.0 Release Announcement を参照してください。スコープに関係なく常に有効な配列 $_GET, $_POST, $_ENV, $_SERVER, $_COOKIE, $_REQUEST, $_FILESそして $_SESSIONは略して スーパーグローバルと呼ばれています。これに対応する以前の HTTP_*_VARSの使用は推奨されません。

ディレクティブ register_globals が設定され ていた場合、これらの変数もスクリプトのグローバルスコープで利用可能 です。そしてこの変数は配列 $HTTP_*_VARS もしくは$_*とは別のものとして利用可能です。 関連する情報がセキュリティの章の グローバル変数への登録を使用にありますので参照下さい。

$argv

スクリプトに渡される引数の配列。スクリプトがコマンドラインで 実行された場合、これにより、C言語の形式でコマンドラインのパラ メータにアクセスすることができます。GETメソッドでコールされた 場合、この配列にはクエリー文字列が含まれます。

$argc

スクリプトに渡されたコマンドラインパラメータの数を有しています。 (コマンドラインで実行された場合)

$PHP_SELF

現在実行しているスクリプトのドキュメントルートに相対パスで表し たファイル名。PHPがコマンドラインプロセッサとして実行されてい る場合、この変数は利用できません。パス情報がある場合には、 その情報も含まれます(例えば "http://example.com/test.php/foo.bar" にアクセスした場合の$PHP_SELFの内容は"/test.php/foo.bar"になります)。

$HTTP_COOKIE_VARS

HTTPクッキーにより現在のスクリプトに渡された変数を有する連想配 列です。

$_COOKIE

HTTPクッキーにより現在のスクリプトに渡された変数を有する連想配 列です。あらゆるスコープで自動的にグローバルになります。PHP 4.1.0で導入されました。

$HTTP_GET_VARS

HTTP GETメソッドにより現在のスクリプトに渡された変数を有する 連想配列です。

$_GET

HTTP GETメソッドにより現在のスクリプトに渡された変数を有する 連想配列です。あらゆるスコープで自動的にグローバルになります。

$HTTP_POST_VARS

HTTP POSTメソッドによりカレントのスクリプトの渡された変数を有 する連想配列です。

$_POST

HTTP POSTメソッドによりカレントのスクリプトの渡された変数を有 する連想配列です。あらゆるスコープで自動的にグローバルに なります。

$HTTP_POST_FILES

HTTP POSTメソッドによりアップロードされたファイルに関する情報 を有する連想配列。$HTTP_POST_FILESの内容に 関する情報については、POSTメソッドによるア ップロードを参照下さい。PHP 4.0.0で導入されました。

$_FILES

HTTP POSTメソッドによりアップロードされたファイルに関する情報 を有する連想配列。$_FILESの内容に 関する情報については、POSTメソッドによるア ップロードを参照下さい。PHP 4.1.0で導入されました。

$HTTP_ENV_VARS

上位環境からカレントのスクリプトに渡された変数の連想配列。

$_ENV

上位環境からカレントのスクリプトに渡された変数の連想配列。 あらゆるスコープで自動的にグローバルになります。PHP 4.1.0で 導入されました。

$HTTP_SERVER_VARS

HTTPサーバーからカレントのスクリプトに渡された変数の連想配列。 これらの変数は、前記のApache変数と類似のものです。

$_SERVER

HTTPサーバーからカレントのスクリプトに渡された変数の連想配列。 これらの変数は、前記のApache変数と類似のものです。あらゆる スコープで自動的にグローバルになります。PHP 4.1.0で導入されました。

$HTTP_SESSION_VARS

カレントのスクリプトに渡されたセッション変数の連想配列。

$_SESSION

カレントのスクリプトに渡されたセッション変数の連想配列。 あらゆるスコープで自動的にグローバルになります。$_SESSION 変数に新しいエントリを作成すると、 session_register()を呼び出したときと 同様にその値はセッション変数として登録されます。 PHP 4.1.0で導入されました。

$_REQUEST

GET, POSTそしてCookieの値を結合した、即ち、ユーザから 送信された全ての情報をもつ変数。セキュリティ的観点から 言うと必ずしも信用できるものでは有りません。あらゆる スコープで自動的にグローバルになります。PHP 4.1.0で 導入されました。