<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/security.cgi-bin.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'ja',
  ),
  'this' => 
  array (
    0 => 'security.cgi-bin.doc-root.php',
    1 => 'ケース 3: doc_root または user_dir を設定',
    2 => 'ケース 3: doc_root または user_dir を設定',
  ),
  'up' => 
  array (
    0 => 'security.cgi-bin.php',
    1 => 'CGI バイナリとしてインストール',
  ),
  'prev' => 
  array (
    0 => 'security.cgi-bin.force-redirect.php',
    1 => 'ケース 2: cgi.force_redirect を使用',
  ),
  'next' => 
  array (
    0 => 'security.cgi-bin.shell.php',
    1 => 'ケース 4: Webツリーの外にPHPパーサーを置く',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'ja',
    'path' => 'security/cgi-bin.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="security.cgi-bin.doc-root" class="sect1">
    <h2 class="title">ケース 3: doc_root または user_dir を設定</h2>
    <p class="simpara">
     Web サーバー上のドキュメントディレクトリに
     スクリプトや実行ファイルのようなアクティブな内容を読み込むのは、
     往々にして危険な行為であるとみなされることがあります。
     何らかの設定ミスによりスクリプトが実行されず、通常の HTML ドキュメント
     として表示されてしまう場合には、知的著作物またはパスワードのような
     セキュリティ情報が漏洩する可能性があります。
     このため、多くのシステム管理者は、スクリプトを PHP CGI を通じてのみ
     アクセス可能な他のディレクトリ構造にセットアップしたいと思うこと
     でしょう。
     この場合、常にインタープリタに処理されるため、上記のように表示されること
     はありません。
    </p>
    <p class="simpara">
     前節で記したようなリクエストがリダイレクトされたものでないことを
     確かめる方法が利用可能でない場合、
     スクリプト用の <a href="ini.core.php#ini.doc-root" class="link">doc_root</a> を Web ドキュメント用ルートとは別に
     セットアップする必要があります。
    </p>
    <p class="simpara">
     設定用命令 <a href="ini.core.php#ini.doc-root" class="link">doc_root</a> により
     <a href="configuration.file.php" class="link">設定ファイル</a> ファイル中で
     PHP スクリプト用ドキュメントルートを設定することができます。
     または、環境変数 <var class="envar">PHP_DOCUMENT_ROOT</var> でも設定する
     ことができます。
     これを設定した場合、<abbr title="Common Gateway Interface">CGI</abbr> 版の PHP は、
     常に開くファイルの名前をこの <code class="parameter">doc_root</code>
     リクエストのパス情報を用いて作成し、
     (以下の <code class="parameter">user_dir</code> を除き、)確実に
     このディレクトリの外側でスクリプトが実行されないようにします。
    </p>
    <p class="simpara">
     ここで利用可能な別のオプションは、<a href="ini.core.php#ini.user-dir" class="link">user_dir</a> です。<code class="parameter">user_dir</code> が設定されていない場合、
     開かれるファイル名を制御するのは、<code class="parameter">doc_root</code>
     のみです。
     <var class="filename">http://my.host/~user/doc.php</var> のような
     URL は、ユーザーホームディレクトリ以下のファイルを開かず、
     <code class="parameter">user_dir</code> 以下の <var class="filename">~user/doc.php</var> 
     というファイルを開くことになります。
     (ディレクトリ名がチルダ [<code class="literal">~</code>] で始まっている
     ということになります)
    </p>
    <p class="simpara">
     <code class="parameter">user_dir</code> が例えば、<var class="filename">public_php</var>に
     設定されていた場合、
     <var class="filename">http://my.host/~user/doc.php</var> の
     ようなリクエストは、そのユーザー user のホームディレクトリにある
     <var class="filename">public_php</var> 以下の
     <var class="filename">doc.php</var> という名前のファイルをオープンしま
     す。ユーザーのホームディレクトリが、
     <var class="filename">/home/user</var> である場合、
     実行されるファイルは、
     <var class="filename">/home/user/public_php/doc.php</var>
     となります。
    </p>
    <p class="simpara">
     <code class="parameter">user_dir</code> の展開は、
     <code class="parameter">doc_root</code> の設定によらず行われます。
     このため、ドキュメントルートおよびユーザーディレクトリへの
     アクセスを別々に制御することができます。
    </p>
   </div><?php manual_footer($setup); ?>