<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/reserved.variables.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'ja',
  ),
  'this' => 
  array (
    0 => 'reserved.variables.server.php',
    1 => '$_SERVER',
    2 => 'サーバー情報および実行時の環境情報',
  ),
  'up' => 
  array (
    0 => 'reserved.variables.php',
    1 => '定義済みの変数',
  ),
  'prev' => 
  array (
    0 => 'reserved.variables.globals.php',
    1 => '$GLOBALS',
  ),
  'next' => 
  array (
    0 => 'reserved.variables.get.php',
    1 => '$_GET',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'ja',
    'path' => 'language/predefined/variables/server.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="reserved.variables.server" class="refentry">
 <div class="refnamediv">
  <h1 class="refname">$_SERVER</h1>
  <p class="verinfo">(PHP 4 &gt;= 4.1.0, PHP 5, PHP 7, PHP 8)</p><p class="refpurpose"><span class="refname">$_SERVER</span> &mdash; <span class="dc-title">サーバー情報および実行時の環境情報</span></p>

 </div>
 
 <div class="refsect1 description" id="refsect1-reserved.variables.server-description">
  <h3 class="title">説明</h3>
  <p class="para">
   <var class="varname">$_SERVER</var> は、ヘッダ、パス、スクリプトの位置のような
   情報を有する配列です。この配列のエントリは、Web サーバーにより
   生成されます。全ての Web サーバーがこれら全てを提供する保証はありません。
   サーバーは、これらのいくつかを省略したり、この一覧にない他のものを
   定義する可能性があります。しかし、これらの変数のほとんどは、
   <a href="https://datatracker.ietf.org/doc/html/rfc3875" class="link external">&raquo;&nbsp;CGI/1.1 specification</a>
   で定義されています。したがって、これらのほとんどは定義されていることを
   期待することができます。
  </p>
  <blockquote class="note"><p><strong class="note">注意</strong>: 
   <span class="simpara">
    PHP を
    <a href="features.commandline.php" class="link">コマンドライン</a>
    から実行している場合、
    これらの変数のほとんどは利用できないか、
    なんの意味も持ちません。
   </span>
  </p></blockquote>
  <p class="para">
   以下に示された要素に加え、
   PHP はリクエストヘッダから追加の要素を生成します。
   それらの要素は
   <code class="literal">HTTP_</code> で始まり、
   その後にヘッダの名前が続き、
   かつ大文字に変換され、ハイフンがアンダースコアになります。
   たとえば、
   <code class="literal">Accept-Language</code> ヘッダは
   <code class="code">$_SERVER[&#039;HTTP_ACCEPT_LANGUAGE&#039;]</code> として利用可能です。
  </p>
 </div>


 <div class="refsect1 indices" id="refsect1-reserved.variables.server-indices">
  <h3 class="title">インデックス</h3>

  <p class="para">
   <dl>
    
     <dt>&#039;<var class="varname">PHP_SELF</var>&#039;</dt>
     <dd>
      <span class="simpara">
       現在実行しているスクリプトのファイル名です。
       ドキュメントルートから取得されます。
       例えば、<var class="filename">http://example.com/foo/bar.php</var>
       というアドレス上にあるスクリプトでは <var class="varname">$_SERVER['PHP_SELF']</var>
       は <var class="filename">/foo/bar.php</var> となります。
       <a href="language.constants.magic.php" class="link">__FILE__</a> 定数
       には、カレント(すなわち読み込まれた)ファイルのパスとファイル名が含まれます。
      </span>
      <span class="simpara">
       PHP がコマンドラインから実行される場合、
       この変数にはスクリプト名が含まれます。
      </span>
     </dd>
    

    
     <dt>&#039;<a href="reserved.variables.argv.php" class="link">argv</a>&#039;</dt>
     <dd>
      <span class="simpara">
       スクリプトに渡された引数の配列です。スクリプトがコマンドラインから
       実行された場合、C 言語スタイルでコマンドライン引数に
       アクセスすることができます。GET メソッドを通してコールされた場合には
       検索引数が格納されます。
      </span>
     </dd>
    

    
     <dt>&#039;<a href="reserved.variables.argc.php" class="link">argc</a>&#039;</dt>
     <dd>
      <span class="simpara">
       スクリプトに渡されたコマンドライン引数の数
       (コマンドラインから実行した場合) です。
      </span>
     </dd>
    

    
     <dt>&#039;<var class="varname">GATEWAY_INTERFACE</var>&#039;</dt>
     <dd>
      <span class="simpara">
       サーバーが使用している CGI のバージョンです。
       例 <code class="literal">&#039;CGI/1.1&#039;</code>
      </span>
     </dd>
    

    
     <dt>&#039;<var class="varname">SERVER_ADDR</var>&#039;</dt>
     <dd>
      <span class="simpara">
       現在のスクリプトが実行されているサーバーの IP アドレスです。
      </span>
     </dd>
    

    
     <dt>&#039;<var class="varname">SERVER_NAME</var>&#039;</dt>
     <dd>
      <span class="simpara">
       現在のスクリプトが実行されているサーバーのホスト名です。
       スクリプトがバーチャルホスト上で実行されている場合は
       そのバーチャルホスト名となります。
      </span>
      <blockquote class="note"><p><strong class="note">注意</strong>: 
       <span class="simpara">
        Apache 2 では、<code class="literal">UseCanonicalName = On</code>
        と <code class="literal">ServerName</code> を設定する必要があります。
        そうしなければ、この値はクライアントが提供するホスト名を指すようになってしまい、無意味です。
        また、セキュリティ的な意味合いでこの値に頼ってはいけません。
       </span>
      </p></blockquote>
     </dd>
    

    
     <dt>&#039;<var class="varname">SERVER_SOFTWARE</var>&#039;</dt>
     <dd>
      <span class="simpara">
       レスポンスヘッダ上に書かれている、
       サーバーの認識文字列です。
      </span>
     </dd>
    

    
     <dt>&#039;<var class="varname">SERVER_PROTOCOL</var>&#039;</dt>
     <dd>
      <span class="simpara">
       ページがリクエストされた際のプロトコル名とバージョンです。
       例. <code class="literal">&#039;HTTP/1.0&#039;</code>
      </span>
     </dd>
    
    
    
     <dt>&#039;<var class="varname">REQUEST_METHOD</var>&#039;</dt>
     <dd>
      <span class="simpara">
       ページにアクセスする際に使用されたリクエストのメソッド名です。
       <code class="literal">&#039;GET&#039;</code>,
       <code class="literal">&#039;HEAD&#039;</code>,
       <code class="literal">&#039;POST&#039;</code>,
       <code class="literal">&#039;PUT&#039;</code> など。
      </span>
      <blockquote class="note"><p><strong class="note">注意</strong>: 
       <p class="para">
        リクエストのメソッドが <code class="literal">HEAD</code> だった場合、
        PHP スクリプトはヘッダを送信した後（言い換えれば、
        出力バッファリングを行わずに全出力を処理した後）に終了します。
       </p>
      </p></blockquote>
     </dd>
    

    
     <dt>&#039;<var class="varname">REQUEST_TIME</var>&#039;</dt>
     <dd>
      <span class="simpara">
       PHP がリクエストの処理を開始した時のタイムスタンプ。
      </span>
     </dd>
    

    
     <dt>&#039;<var class="varname">REQUEST_TIME_FLOAT</var>&#039;</dt>
     <dd>
      <span class="simpara">
       PHP がリクエストの処理を開始した時のタイムスタンプ (マイクロ秒までの精度)。
      </span>
     </dd>
    

    
     <dt>&#039;<var class="varname">QUERY_STRING</var>&#039;</dt>
     <dd>
      <span class="simpara">
       ページがアクセスされた際にもし検索引数があればそれが格納されます。
      </span>
     </dd>
    

    
     <dt>&#039;<var class="varname">DOCUMENT_ROOT</var>&#039;</dt>
     <dd>
      <span class="simpara">
       現在実行されているスクリプトが存在するドキュメントルート
       ディレクトリです。サーバーのコンフィグレーションファイルで
       定義されています。
      </span>
     </dd>
    

    
     <dt>&#039;<var class="varname">HTTPS</var>&#039;</dt>
     <dd>
      <span class="simpara">
       スクリプトが HTTPS プロトコルを通じて実行されている場合に
       空でない値が設定されます。
      </span>
     </dd>
    

    
     <dt>&#039;<var class="varname">REMOTE_ADDR</var>&#039;</dt>
     <dd>
      <span class="simpara">
       現在ページをみているユーザーの IP アドレス。
      </span>
     </dd>
    

    
     <dt>&#039;<var class="varname">REMOTE_HOST</var>&#039;</dt>
     <dd>
      <span class="simpara">
       現在のページにアクセスしているホスト名。DNS の逆引き検索は
       ユーザーの <var class="varname">REMOTE_ADDR</var> に基づいています。
      </span>
      <blockquote class="note"><p><strong class="note">注意</strong>: 
       <span class="simpara">
        Web サーバーがこの値を生成できるように設定されている必要があります。
        例えば Apache の場合 <code class="literal">HostnameLookups On</code> が
        <var class="filename">httpd.conf</var> に設定されていなければこの値は生成されません。
        <span class="function"><a href="function.gethostbyaddr.php" class="function">gethostbyaddr()</a></span> もご覧ください。
       </span>
      </p></blockquote>
     </dd>
    

    
     <dt>&#039;<var class="varname">REMOTE_PORT</var>&#039;</dt>
     <dd>
      <span class="simpara">
       ユーザーのマシンから Web サーバーへの通信に使用されているポート番号
      </span>
     </dd>
    

    
     <dt>&#039;<var class="varname">REMOTE_USER</var>&#039;</dt>
     <dd>
      <span class="simpara">
        認証されたユーザー。
      </span>
     </dd>
    

    
     <dt>&#039;<var class="varname">REDIRECT_REMOTE_USER</var>&#039;</dt>
     <dd>
      <span class="simpara">
        リクエストが内部でリダイレクトされた場合の認証されたユーザー。
      </span>
     </dd>
    

    
     <dt>&#039;<var class="varname">SCRIPT_FILENAME</var>&#039;</dt>
     <dd>
      <p class="para">
       現在実行されているスクリプトの絶対パス
       <blockquote class="note"><p><strong class="note">注意</strong>: 
        <p class="para">
         <var class="filename">file.php</var> あるいは
         <var class="filename">../file.php</var> のような相対パスを指定して
         CLI でスクリプトが実行されている場合、
         <var class="varname">$_SERVER['SCRIPT_FILENAME']</var> には
         ユーザーが指定した相対パスが含まれます。
        </p>
       </p></blockquote>
      </p>
     </dd>
    

    
     <dt>&#039;<var class="varname">SERVER_ADMIN</var>&#039;</dt>
     <dd>
      <span class="simpara">
       Web サーバーの設定ファイルの SERVER_ADMIN (Apache の場合)ディレクティブ
       にセットされている値。スクリプトがバーチャルホスト上で
       実行されている場合、バーチャルホストに対して値が定義されます。
      </span>
     </dd>
    
    
    
     <dt>&#039;<var class="varname">SERVER_PORT</var>&#039;</dt>
     <dd>
      <span class="simpara">
       Web サーバーの通信ポートとして使用されているポート番号。デフォルトでは
       <code class="literal">&#039;80&#039;</code> ですが、例えば SSL を使用している場合は
       セキュア HTTP ポートとして設定されている値に変わります。
      </span>
      <blockquote class="note"><p><strong class="note">注意</strong>: 
       <span class="simpara">
        Apache 2 では、<code class="literal">UseCanonicalName = On</code> だけでなく
        <code class="literal">UseCanonicalPhysicalPort = On</code> も設定しないと物理ポート
        (実際のポート) を取得できません。設定しなければ、
        この値は詐称できる状態になり、
        物理ポートを返さなくなるかもしれません。
        セキュリティに依存するコンテキストで、この値に頼るのは安全ではありません。
       </span>
      </p></blockquote>
     </dd>
    

    
     <dt>&#039;<var class="varname">SERVER_SIGNATURE</var>&#039;</dt>
     <dd>
      <span class="simpara">
       サーバー上で生成されたページに追加される、
       サーバーのバージョン名とバーチャルホスト名の文字列。
       Web サーバーの設定で有効になっていることが必要です。
      </span>
     </dd>
    

    
     <dt>&#039;<var class="varname">PATH_TRANSLATED</var>&#039;</dt>
     <dd>
      <span class="simpara">
       バーチャルからリアルへのマッピングがなされた後の、
       現在のスクリプトのファイルシステム上（ドキュメントルートではなく）
       でのパス。
      </span>
      <blockquote class="note"><p><strong class="note">注意</strong>: 
       <span class="simpara">
        Apache 2 ユーザーは、<var class="envar">PATH_INFO</var> を定義するために
        <var class="filename">httpd.conf</var> の中で
        <code class="literal">AcceptPathInfo = On</code> 
        を使用することが可能です。
       </span>
      </p></blockquote>
     </dd>
    

    
     <dt>&#039;<var class="varname">SCRIPT_NAME</var>&#039;</dt>
     <dd>
      <span class="simpara">
       現在のスクリプトのパス。
       スクリプト自身のページを指定するのに有用です。
       <a href="language.constants.magic.php" class="link">__FILE__</a>
       定数には、カレント(すなわち読み込まれた)ファイルのパスとファイル名が
       含まれます。
      </span>
     </dd>
    

    
     <dt>&#039;<var class="varname">REQUEST_URI</var>&#039;</dt>
     <dd>
      <span class="simpara">
       ページにアクセスするために指定された URI。例えば、
       &#039;<code class="literal">/index.html</code>&#039;
      </span>
     </dd>
    

    
     <dt>&#039;<var class="varname">PHP_AUTH_DIGEST</var>&#039;</dt>
     <dd>
      <span class="simpara">
       HTTP ダイジェスト認証を
       行っている場合、クライアントから送られた &#039;Authorization&#039; ヘッダの
       内容が設定されます（適切な認証処理を行うために利用します）。
      </span>
     </dd>
    

    
     <dt>&#039;<var class="varname">PHP_AUTH_USER</var>&#039;</dt>
     <dd>
      <span class="simpara">
       HTTP 認証しているときにそのユーザー名がセットされます。
      </span>
     </dd>
    

    
     <dt>&#039;<var class="varname">PHP_AUTH_PW</var>&#039;</dt>
     <dd>
      <span class="simpara">
       HTTP 認証しているときにそのユーザーの
       パスワードがセットされます。
      </span>
     </dd>
    

    
     <dt>&#039;<var class="varname">AUTH_TYPE</var>&#039;</dt>
     <dd>
      <span class="simpara">
       HTTP 認証しているときにその認証形式がセットされます。
      </span>
     </dd>
    

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

    
     <dt>&#039;<var class="varname">ORIG_PATH_INFO</var>&#039;</dt>
     <dd>
      <span class="simpara">
       PHP で処理される前の &#039;<var class="varname">PATH_INFO</var>&#039; の原本。
      </span>
     </dd>
    

   </dl>
  </p>
 </div>

 
 <div class="refsect1 examples" id="refsect1-reserved.variables.server-examples">
  <h3 class="title">例</h3>
  <p class="para">
   <div class="example" id="variable.server.basic">
    <p><strong>例1 <var class="varname">$_SERVER</var> の例</strong></p>
    <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br /></span><span style="color: #007700">echo </span><span style="color: #0000BB">$_SERVER</span><span style="color: #007700">[</span><span style="color: #DD0000">'SERVER_NAME'</span><span style="color: #007700">];<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
    </div>

    <div class="example-contents"><p>上の例の出力は、
たとえば以下のようになります。</p></div>
    <div class="example-contents screen">
<div class="examplescode"><pre class="examplescode">www.example.com</pre>
</div>
    </div>
   </div>
  </p>
 </div>

 
 <div class="refsect1 notes" id="refsect1-reserved.variables.server-notes">
  <h3 class="title">注意</h3>
  <blockquote class="note"><p><strong class="note">注意</strong>: <p class="para">これは &#039;スーパーグローバル&#039;
あるいは自動グローバル変数と呼ばれるものです。
スクリプト全体を通してすべてのスコープで使用することができます。
関数やメソッドの内部で使用する場合にも
<strong class="command">global $variable;</strong> とする必要はありません。
</p></p></blockquote>
 </div>


 <div class="refsect1 seealso" id="refsect1-reserved.variables.server-seealso">
  <h3 class="title">参考</h3>
  <p class="para">
   <ul class="simplelist">
    <li><a href="book.filter.php" class="link">filter 拡張モジュール</a></li>
   </ul>
  </p>
 </div>


</div><?php manual_footer($setup); ?>