DocumentRoot 是 Apache 中决定“哪个目录里的文件能被浏览器直接访问”的关键指令,必须指向可执行 PHP 的真实路径(如 "/var/www/myapp/public"),且需配合 PHP 模块启用、AddType 配置、Directory 权限(Require all granted)及正确 php.ini 路径才能解析 .php 文件。

DocumentRoot 是 Apache 中决定“哪个目录里的文件能被浏览器直接访问”的关键指令。它本身不运行 PHP,但必须和 PHP 模块协同工作,才能让 .php 文件被正确解析而不是下载或报错。
DocumentRoot 必须指向可执行 PHP 的真实路径
这个目录里得有 index.php 或其他 PHP 脚本,且路径必须准确无误。例如:
- ✅ 正确:
DocumentRoot "/var/www/myapp/public"(ThinkPHP 等现代框架强制要求) - ❌ 错误:
DocumentRoot "/var/www/myapp/"(会暴露 config、runtime 等敏感目录) - ⚠️ 注意末尾斜杠:旧版 Apache 对
/var/www/app/(带斜杠)可能报 403,推荐统一用无斜杠写法/var/www/app
PHP 模块加载后,DocumentRoot 目录才具备解析能力
光设对路径不够,还得确保:
-
LoadModule php_module modules/libphp.so(Linux)或php8apache2_4.dll(Windows)已启用(取消注释) -
PHPIniDir指向正确的php.ini所在目录(尤其 Windows 下常见遗漏) -
AddType application/x-httpd-php .php已配置,否则浏览器会把index.php当文本下载
对应 Directory 块必须授权 PHP 执行权限
DocumentRoot 只指定起点,真正控制“能不能运行 PHP”的是 <directory></directory> 块:
-
Require all granted(Apache 2.4+ 必须项,缺了就 403) -
AllowOverride All(支持.htaccess,重写、环境变量等依赖它) -
Options +ExecCGI(部分 CGI 模式需显式开启,但模块模式通常不需要)
常见连带问题排查点
- 浏览器打开显示源码 → 检查
AddType是否漏配或拼写错误(如写成x-httpd-php7) - 报 403 Forbidden → 查
<directory></directory>权限是否缺失Require all granted - 报 500 或空白页 → 看
error_log,大概率是php.ini路径错、扩展没启、或display_errors = Off掩盖了致命错误 - ThinkPHP 白屏或路由 404 →
DocumentRoot一定得是public/,不是项目根目录
不复杂但容易忽略



















