$_SERVER
PHP Manual
PHP Manual»定義済みの変数»$_SERVER

$_SERVER

(PHP 4 >= 4.1.0, PHP 5, PHP 7, PHP 8)

$_SERVER — サーバー情報および実行時の環境情報

説明

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

注意:

PHP を コマンドライン から実行している場合、 これらの変数のほとんどは利用できないか、 なんの意味も持ちません。

以下に示された要素に加え、 PHP はリクエストヘッダから追加の要素を生成します。 それらの要素は HTTP_ で始まり、 その後にヘッダの名前が続き、 かつ大文字に変換され、ハイフンがアンダースコアになります。 たとえば、 Accept-Language ヘッダは $_SERVER['HTTP_ACCEPT_LANGUAGE'] として利用可能です。

インデックス

'PHP_SELF'

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

PHP がコマンドラインから実行される場合、 この変数にはスクリプト名が含まれます。

'argv'

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

'argc'

スクリプトに渡されたコマンドライン引数の数 (コマンドラインから実行した場合) です。

'GATEWAY_INTERFACE'

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

'SERVER_ADDR'

現在のスクリプトが実行されているサーバーの IP アドレスです。

'SERVER_NAME'

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

注意:

Apache 2 では、UseCanonicalName = On と ServerName を設定する必要があります。 そうしなければ、この値はクライアントが提供するホスト名を指すようになってしまい、無意味です。 また、セキュリティ的な意味合いでこの値に頼ってはいけません。

'SERVER_SOFTWARE'

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

'SERVER_PROTOCOL'

ページがリクエストされた際のプロトコル名とバージョンです。 例. 'HTTP/1.0'

'REQUEST_METHOD'

ページにアクセスする際に使用されたリクエストのメソッド名です。 'GET', 'HEAD', 'POST', 'PUT' など。

注意:

リクエストのメソッドが HEAD だった場合、 PHP スクリプトはヘッダを送信した後(言い換えれば、 出力バッファリングを行わずに全出力を処理した後)に終了します。

'REQUEST_TIME'

PHP がリクエストの処理を開始した時のタイムスタンプ。

'REQUEST_TIME_FLOAT'

PHP がリクエストの処理を開始した時のタイムスタンプ (マイクロ秒までの精度)。

'QUERY_STRING'

ページがアクセスされた際にもし検索引数があればそれが格納されます。

'DOCUMENT_ROOT'

現在実行されているスクリプトが存在するドキュメントルート ディレクトリです。サーバーのコンフィグレーションファイルで 定義されています。

'HTTPS'

スクリプトが HTTPS プロトコルを通じて実行されている場合に 空でない値が設定されます。

'REMOTE_ADDR'

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

'REMOTE_HOST'

現在のページにアクセスしているホスト名。DNS の逆引き検索は ユーザーの REMOTE_ADDR に基づいています。

注意:

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

'REMOTE_PORT'

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

'REMOTE_USER'

認証されたユーザー。

'REDIRECT_REMOTE_USER'

リクエストが内部でリダイレクトされた場合の認証されたユーザー。

'SCRIPT_FILENAME'

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

注意:

file.php あるいは ../file.php のような相対パスを指定して CLI でスクリプトが実行されている場合、 $_SERVER['SCRIPT_FILENAME'] には ユーザーが指定した相対パスが含まれます。

'SERVER_ADMIN'

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

'SERVER_PORT'

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

注意:

Apache 2 では、UseCanonicalName = On だけでなく UseCanonicalPhysicalPort = On も設定しないと物理ポート (実際のポート) を取得できません。設定しなければ、 この値は詐称できる状態になり、 物理ポートを返さなくなるかもしれません。 セキュリティに依存するコンテキストで、この値に頼るのは安全ではありません。

'SERVER_SIGNATURE'

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

'PATH_TRANSLATED'

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

注意:

Apache 2 ユーザーは、PATH_INFO を定義するために httpd.conf の中で AcceptPathInfo = On を使用することが可能です。

'SCRIPT_NAME'

現在のスクリプトのパス。 スクリプト自身のページを指定するのに有用です。 __FILE__ 定数には、カレント(すなわち読み込まれた)ファイルのパスとファイル名が 含まれます。

'REQUEST_URI'

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

'PHP_AUTH_DIGEST'

HTTP ダイジェスト認証を 行っている場合、クライアントから送られた 'Authorization' ヘッダの 内容が設定されます(適切な認証処理を行うために利用します)。

'PHP_AUTH_USER'

HTTP 認証しているときにそのユーザー名がセットされます。

'PHP_AUTH_PW'

HTTP 認証しているときにそのユーザーの パスワードがセットされます。

'AUTH_TYPE'

HTTP 認証しているときにその認証形式がセットされます。

'PATH_INFO'

実際のスクリプトファイル名とクエリ文字列の間にある、クライアントが提供するパス名情報。 たとえば、現在のスクリプトに http://www.example.com/php/path_info.php/some/stuff?foo=bar という URI でアクセスしていた場合の $_SERVER['PATH_INFO'] は /some/stuff となります。

'ORIG_PATH_INFO'

PHP で処理される前の 'PATH_INFO' の原本。

例

例1 $_SERVER の例

<?php
echo $_SERVER['SERVER_NAME'];
?>

上の例の出力は、 たとえば以下のようになります。

www.example.com

注意

注意:

これは 'スーパーグローバル' あるいは自動グローバル変数と呼ばれるものです。 スクリプト全体を通してすべてのスコープで使用することができます。 関数やメソッドの内部で使用する場合にも global $variable; とする必要はありません。

To Top