PHP 大会日本 2024

案例 3:设置 doc_root 或 user_dir

在 Web 服务器文档目录中包含活动内容(如脚本和可执行文件)有时被认为是不安全的做法。如果由于某些配置错误,脚本没有被执行而是作为普通 HTML 文档显示,这可能导致知识产权或安全信息(如密码)泄露。因此,许多系统管理员更倾向于为仅通过 PHP CGI 访问的脚本设置另一个目录结构,从而始终解释这些脚本,而不是将其显示为普通 HTML 文档。

此外,如果前面部分描述的确保请求不被重定向的方法不可用,则需要设置一个与 Web 文档根目录不同的脚本 doc_root

您可以通过配置文件中的配置指令 doc_root 或设置环境变量 PHP_DOCUMENT_ROOT 来设置 PHP 脚本文档根目录。如果设置了该变量,PHP 的 CGI 版本将始终使用此 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 的请求将打开用户主目录下名为 public_php 的目录中的名为 doc.php 的文件。如果用户的 home 为 /home/user,则执行的文件为 /home/user/public_php/doc.php

user_dir 展开独立于 doc_root 设置进行,因此您可以分别控制文档根目录和用户目录访问。

添加注释

用户贡献的注释

此页面没有用户贡献的注释。
To Top