1
0
mirror of https://github.com/php/doc-ja.git synced 2026-03-27 08:32:09 +01:00
Files
archived-doc-ja/language/predefined/variables/server.xml
2025-08-17 08:18:01 +09:00

498 lines
16 KiB
XML

<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<!-- EN-Revision: a124543dd3f6b1e5567b07420d23899e582514dc Maintainer: satoruyoshida Status: ready -->
<!-- CREDITS: mumumu -->
<refentry role="variable" xml:id="reserved.variables.server" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
<refnamediv>
<refname>$_SERVER</refname>
<refpurpose>サーバー情報および実行時の環境情報</refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
<para>
<varname>$_SERVER</varname> は、ヘッダ、パス、スクリプトの位置のような
情報を有する配列です。この配列のエントリは、Web サーバーにより
生成されます。全ての Web サーバーがこれら全てを提供する保証はありません。
サーバーは、これらのいくつかを省略したり、この一覧にない他のものを
定義する可能性があります。しかし、これらの変数のほとんどは、
<link xlink:href="&url.rfc;3875">CGI/1.1 specification</link>
で定義されています。したがって、これらのほとんどは定義されていることを
期待することができます。
</para>
<note>
<simpara>
PHP を
<link linkend="features.commandline">コマンドライン</link>
から実行している場合、
これらの変数のほとんどは利用できないか、
なんの意味も持ちません。
</simpara>
</note>
<para>
以下に示された要素に加え、
PHP はリクエストヘッダから追加の要素を生成します。
それらの要素は
<literal>HTTP_</literal> で始まり、
その後にヘッダの名前が続き、
かつ大文字に変換され、ハイフンがアンダースコアになります。
たとえば、
<literal>Accept-Language</literal> ヘッダは
<code>$_SERVER['HTTP_ACCEPT_LANGUAGE']</code> として利用可能です。
</para>
</refsect1>
<refsect1 role="indices">
&reftitle.indices;
<para>
<variablelist>
<varlistentry>
<term>'<varname>PHP_SELF</varname>'</term>
<listitem>
<simpara>
現在実行しているスクリプトのファイル名です。
ドキュメントルートから取得されます。
例えば、<filename>http://example.com/foo/bar.php</filename>
というアドレス上にあるスクリプトでは <varname>$_SERVER['PHP_SELF']</varname>
<filename>/foo/bar.php</filename> となります。
<link linkend="language.constants.magic">__FILE__</link> 定数
には、カレント(すなわち読み込まれた)ファイルのパスとファイル名が含まれます。
</simpara>
<simpara>
PHP がコマンドラインから実行される場合、
この変数にはスクリプト名が含まれます。
</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term>'<link linkend="reserved.variables.argv">argv</link>'</term>
<listitem>
<simpara>
スクリプトに渡された引数の配列です。スクリプトがコマンドラインから
実行された場合、C 言語スタイルでコマンドライン引数に
アクセスすることができます。GET メソッドを通してコールされた場合には
検索引数が格納されます。
</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term>'<link linkend="reserved.variables.argc">argc</link>'</term>
<listitem>
<simpara>
スクリプトに渡されたコマンドライン引数の数
(コマンドラインから実行した場合) です。
</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term>'<varname>GATEWAY_INTERFACE</varname>'</term>
<listitem>
<simpara>
サーバーが使用している CGI のバージョンです。
<literal>'CGI/1.1'</literal>
</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term>'<varname>SERVER_ADDR</varname>'</term>
<listitem>
<simpara>
現在のスクリプトが実行されているサーバーの IP アドレスです。
</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term>'<varname>SERVER_NAME</varname>'</term>
<listitem>
<simpara>
現在のスクリプトが実行されているサーバーのホスト名です。
スクリプトがバーチャルホスト上で実行されている場合は
そのバーチャルホスト名となります。
</simpara>
<note>
<simpara>
Apache 2 では、<literal>UseCanonicalName = On</literal>
<literal>ServerName</literal> を設定する必要があります。
そうしなければ、この値はクライアントが提供するホスト名を指すようになってしまい、無意味です。
また、セキュリティ的な意味合いでこの値に頼ってはいけません。
</simpara>
</note>
</listitem>
</varlistentry>
<varlistentry>
<term>'<varname>SERVER_SOFTWARE</varname>'</term>
<listitem>
<simpara>
レスポンスヘッダ上に書かれている、
サーバーの認識文字列です。
</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term>'<varname>SERVER_PROTOCOL</varname>'</term>
<listitem>
<simpara>
ページがリクエストされた際のプロトコル名とバージョンです。
例. <literal>'HTTP/1.0'</literal>
</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term>'<varname>REQUEST_METHOD</varname>'</term>
<listitem>
<simpara>
ページにアクセスする際に使用されたリクエストのメソッド名です。
<literal>'GET'</literal>,
<literal>'HEAD'</literal>,
<literal>'POST'</literal>,
<literal>'PUT'</literal> など。
</simpara>
<note>
<para>
リクエストのメソッドが <literal>HEAD</literal> だった場合、
PHP スクリプトはヘッダを送信した後(言い換えれば、
出力バッファリングを行わずに全出力を処理した後)に終了します。
</para>
</note>
</listitem>
</varlistentry>
<varlistentry>
<term>'<varname>REQUEST_TIME</varname>'</term>
<listitem>
<simpara>
リクエストの開始時のタイムスタンプ。
</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term>'<varname>REQUEST_TIME_FLOAT</varname>'</term>
<listitem>
<simpara>
リクエストの開始時のタイムスタンプ (マイクロ秒までの精度)。
</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term>'<varname>QUERY_STRING</varname>'</term>
<listitem>
<simpara>
ページがアクセスされた際にもし検索引数があればそれが格納されます。
</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term>'<varname>DOCUMENT_ROOT</varname>'</term>
<listitem>
<simpara>
現在実行されているスクリプトが存在するドキュメントルート
ディレクトリです。サーバーのコンフィグレーションファイルで
定義されています。
</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term>'<varname>HTTPS</varname>'</term>
<listitem>
<simpara>
スクリプトが HTTPS プロトコルを通じて実行されている場合に
空でない値が設定されます。
</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term>'<varname>REMOTE_ADDR</varname>'</term>
<listitem>
<simpara>
現在ページをみているユーザーの IP アドレス。
</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term>'<varname>REMOTE_HOST</varname>'</term>
<listitem>
<simpara>
現在のページにアクセスしているホスト名。DNS の逆引き検索は
ユーザーの <varname>REMOTE_ADDR</varname> に基づいています。
</simpara>
<note>
<simpara>
Web サーバーがこの値を生成できるように設定されている必要があります。
例えば Apache の場合 <literal>HostnameLookups On</literal>
&httpd.conf; に設定されていなければこの値は生成されません。
<function>gethostbyaddr</function> もご覧ください。
</simpara>
</note>
</listitem>
</varlistentry>
<varlistentry>
<term>'<varname>REMOTE_PORT</varname>'</term>
<listitem>
<simpara>
ユーザーのマシンから Web サーバーへの通信に使用されているポート番号
</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term>'<varname>REMOTE_USER</varname>'</term>
<listitem>
<simpara>
認証されたユーザー。
</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term>'<varname>REDIRECT_REMOTE_USER</varname>'</term>
<listitem>
<simpara>
リクエストが内部でリダイレクトされた場合の認証されたユーザー。
</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term>'<varname>SCRIPT_FILENAME</varname>'</term>
<listitem>
<para>
現在実行されているスクリプトの絶対パス
<note>
<para>
<filename>file.php</filename> あるいは
<filename>../file.php</filename> のような相対パスを指定して
CLI でスクリプトが実行されている場合、
<varname>$_SERVER['SCRIPT_FILENAME']</varname> には
ユーザーが指定した相対パスが含まれます。
</para>
</note>
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>'<varname>SERVER_ADMIN</varname>'</term>
<listitem>
<simpara>
Web サーバーの設定ファイルの SERVER_ADMIN (Apache の場合)ディレクティブ
にセットされている値。スクリプトがバーチャルホスト上で
実行されている場合、バーチャルホストに対して値が定義されます。
</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term>'<varname>SERVER_PORT</varname>'</term>
<listitem>
<simpara>
Web サーバーの通信ポートとして使用されているポート番号。デフォルトでは
<literal>'80'</literal> ですが、例えば SSL を使用している場合は
セキュア HTTP ポートとして設定されている値に変わります。
</simpara>
<note>
<simpara>
Apache 2 では、<literal>UseCanonicalName = On</literal> だけでなく
<literal>UseCanonicalPhysicalPort = On</literal> も設定しないと物理ポート
(実際のポート) を取得できません。設定しなければ、
この値は詐称できる状態になり、
物理ポートを返さなくなるかもしれません。
セキュリティに依存するコンテキストで、この値に頼るのは安全ではありません。
</simpara>
</note>
</listitem>
</varlistentry>
<varlistentry>
<term>'<varname>SERVER_SIGNATURE</varname>'</term>
<listitem>
<simpara>
サーバー上で生成されたページに追加される、
サーバーのバージョン名とバーチャルホスト名の文字列。
Web サーバーの設定で有効になっていることが必要です。
</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term>'<varname>PATH_TRANSLATED</varname>'</term>
<listitem>
<simpara>
バーチャルからリアルへのマッピングがなされた後の、
現在のスクリプトのファイルシステム上(ドキュメントルートではなく)
でのパス。
</simpara>
<note>
<simpara>
Apache 2 ユーザーは、<envar>PATH_INFO</envar> を定義するために
<filename>httpd.conf</filename> の中で
<literal>AcceptPathInfo = On</literal>
を使用することが可能です。
</simpara>
</note>
</listitem>
</varlistentry>
<varlistentry>
<term>'<varname>SCRIPT_NAME</varname>'</term>
<listitem>
<simpara>
現在のスクリプトのパス。
スクリプト自身のページを指定するのに有用です。
<link linkend="language.constants.magic">__FILE__</link>
定数には、カレント(すなわち読み込まれた)ファイルのパスとファイル名が
含まれます。
</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term>'<varname>REQUEST_URI</varname>'</term>
<listitem>
<simpara>
ページにアクセスするために指定された URI。例えば、
'<literal>/index.html</literal>'
</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term>'<varname>PHP_AUTH_DIGEST</varname>'</term>
<listitem>
<simpara>
HTTP ダイジェスト認証を
行っている場合、クライアントから送られた 'Authorization' ヘッダの
内容が設定されます(適切な認証処理を行うために利用します)。
</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term>'<varname>PHP_AUTH_USER</varname>'</term>
<listitem>
<simpara>
HTTP 認証しているときにそのユーザー名がセットされます。
</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term>'<varname>PHP_AUTH_PW</varname>'</term>
<listitem>
<simpara>
HTTP 認証しているときにそのユーザーの
パスワードがセットされます。
</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term>'<varname>AUTH_TYPE</varname>'</term>
<listitem>
<simpara>
HTTP 認証しているときにその認証形式がセットされます。
</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term>'<varname>PATH_INFO</varname>'</term>
<listitem>
<simpara>
実際のスクリプトファイル名とクエリ文字列の間にある、クライアントが提供するパス名情報。
たとえば、現在のスクリプトに
<filename>http://www.example.com/php/path_info.php/some/stuff?foo=bar</filename>
という URI でアクセスしていた場合の <varname>$_SERVER['PATH_INFO']</varname>
<literal>/some/stuff</literal> となります。
</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term>'<varname>ORIG_PATH_INFO</varname>'</term>
<listitem>
<simpara>
PHP で処理される前の '<varname>PATH_INFO</varname>' の原本。
</simpara>
</listitem>
</varlistentry>
</variablelist>
</para>
</refsect1>
<refsect1 role="examples">
&reftitle.examples;
<para>
<example xml:id="variable.server.basic">
<title><varname>$_SERVER</varname> の例</title>
<programlisting role="php">
<![CDATA[
<?php
echo $_SERVER['SERVER_NAME'];
?>
]]>
</programlisting>
&example.outputs.similar;
<screen>
<![CDATA[
www.example.com
]]>
</screen>
</example>
</para>
</refsect1>
<refsect1 role="notes">
&reftitle.notes;
&note.is-superglobal;
</refsect1>
<refsect1 role="seealso">
&reftitle.seealso;
<para>
<simplelist>
<member><link linkend="book.filter">filter 拡張モジュール</link></member>
</simplelist>
</para>
</refsect1>
</refentry>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->