$_SERVER
(PHP 4 >= 4.1.0, PHP 5, PHP 7, PHP 8)
$_SERVER — サーバー情報および実行時の環境情報
説明
$_SERVER
は、ヘッダ、パス、スクリプトの位置のような
情報を有する配列です。この配列のエントリは、Web サーバーにより
生成されます。全ての Web サーバーがこれら全てを提供する保障はありません。
サーバーは、これらのいくつかを省略したり、この一覧にない他のものを
定義する可能性があります。これらの変数の多くは、
» CGI/1.1 specification
で定義されています。したがって、これらについては定義されていることを
期待することができます。
インデックス
以下の各要素のいくつかは $_SERVER
に現れない可能性があります。PHP
をコマンドラインで実行している場合には、
使用できるものは僅かであることに注意してください。
- '
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
' - リクエストの開始時のタイムスタンプ。
- '
REQUEST_TIME_FLOAT
' - リクエストの開始時のタイムスタンプ (マイクロ秒までの精度)。
- '
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() でこの値を使って ページの出力をそのブラウザにあわせたものにすることも できるでしょう。 - '
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
という URL でアクセスしていた場合の$_SERVER['PATH_INFO']
は/some/stuff
となります。 - '
ORIG_PATH_INFO
' -
PHP で処理される前の '
PATH_INFO
' の原本。
例
例1 $_SERVER
の例
<?phpecho $_SERVER['SERVER_NAME'];?>
上の例の出力は、 たとえば以下のようになります。
www.example.com
注意
注意:
これは 'スーパーグローバル' あるいは自動グローバル変数と呼ばれるものです。 スクリプト全体を通してすべてのスコープで使用することができます。 関数やメソッドの内部で使用する場合にも global $variable; とする必要はありません。