PHP マニュアル
前のページ | 第 24章CGI バイナリとしてインストール | 次のページ

# ケース 3: doc_root または user_dir を設定

Web サーバー上のドキュメントディレクトリに スクリプトや実行ファイルのようなアクティブな内容を読み込むのは、 往々にして危険な行為であるとみなされることがあります。 何らかの設定ミスによりスクリプトが実行されず、通常の HTML ドキュメント として表示されてしまう場合には、知的著作物またはパスワードのような セキュリティ情報が漏洩する可能性があります。 このため、多くのシステム管理者は、スクリプトを PHP CGI を通じてのみ アクセス可能な他のディレクトリ構造にセットアップしたいと思うこと でしょう。 この場合、常にインタープリタに処理されるため、上記のように表示されること はありません。

前節で記したようなリクエストがリダイレクトされたものでないことを 確かめる方法が利用可能でない場合、 スクリプト用の doc_root を Web ドキュメント用ルートとは別に セットアップする必要があります。

設定用命令 doc_root により 設定ファイル ファイル中で PHP スクリプト用ドキュメントルートを設定することができます。 または、環境変数 `PHP_DOCUMENT_ROOT` でも設定する ことができます。 これを設定した場合、CGI 版の PHP は、 常に開くファイルの名前をこの `doc_root` リクエストのパス情報を用いて作成し、 (以下の `user_dir` を除き、)確実に このディレクトリの外側でスクリプトが実行されないようにします。

ここで利用可能な別のオプションは、 user_dir です。user_dir が設定されていない場合、 開かれるファイル名を制御するのは、`doc_root` のみです。 `http://my.host/~user/doc.php` のような URL は、ユーザーホームディレクトリ以下のファイルを開かず、 doc_root 以下の `~user/doc.php` というファイルを開くことになります。 (ディレクトリ名がチルダ [`~`] で始まっている ということになります)

user_dir が例えば、`public_php`に 設定されていた場合、 `http://my.host/~user/doc.php` の ようなリクエストは、そのユーザー user のホームディレクトリにある `public_php` 以下の `doc.php` という名前のファイルをオープンしま す。ユーザーのホームディレクトリが、 `/home/user` である場合、 実行されるファイルは、 `/home/user/public_php/doc.php` となります。

`user_dir` の展開は、 `doc_root` の設定によらず行われます。 このため、ドキュメントルートおよびユーザーディレクトリへの アクセスを別々に制御することができます。

前のページ | ホーム | 次のページ
ケース 2: --enable-force-cgi-redirect を使用 | 上に戻る | ケース 4: Webツリーの外にPHPパーサを置く