定義済みの変数

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 です。

ディレクティブ register_globals が設定され ていた場合、これらの変数もスクリプトのグローバルスコープ、すなわ ち、配列 $HTTP_*_VARSから利用可能です。 この機能は、注意して使用する必要があり、可能ならばオフにする必要 があります。$HTTP_*_VARS 変数は安全ですが、等 価な裸のグローバル変数は恐らくは悪意をもったユーザ入力で上書きさ れる可能性があります。 register_globals をオフにできない場合、使用するデータが安全であることを保証する何 らかのステップが必要となります。

$argv

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

$argc

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

$PHP_SELF

現在実行しているスクリプトのドキュメントルートに相対パスで表し たファイル名。PHPがコマンドラインプロセッサとして実行されてい る場合、この変数は利用できません。

$HTTP_COOKIE_VARS

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

$HTTP_GET_VARS

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

$HTTP_POST_VARS

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

$HTTP_POST_FILES

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

$HTTP_POST_FILESはPHP 4.0.0以降でのみ使用 可能です。

$HTTP_ENV_VARS

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

$HTTP_SERVER_VARS

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