You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker环境下Apache2 WEB_DOCUMENT_ROOT配置不生效返回403错误

问题成因
  • 站点配置未启用:你在sites-available目录下添加的000-default.conf默认不会被Apache加载,只有软链接到sites-enabled目录下的配置才会生效。未启用自定义配置时,Apache会使用默认配置,默认的DocumentRoot就是/var/www/html,这就是你在phpinfo中看到的DOCUMENT_ROOT和你配置不符的原因。
  • 权限指令版本不兼容:000-default.conf中使用的Order Allow,Deny是Apache 2.2版本的权限控制指令,Apache 2.4及以上版本统一使用Require all granted做权限控制,混用两个版本的指令会导致权限判定异常。
  • 重写模块未启用:你放在/var/www/html下的.htaccess重写规则依赖mod_rewrite模块,该模块默认未开启的情况下,重写规则不会生效。访问根目录时Apache会直接查找/var/www/html下的索引文件,找不到对应文件且目录索引被禁止时就会返回403错误。
  • 目录权限不足:/var/www/html/webroot目录的所属用户/权限不符合Apache运行要求,Apache默认使用www-data用户运行,没有目录读权限也会触发403错误。
解决方案
  • 启用自定义站点配置和重写模块,执行以下命令:
# 启用站点配置
a2ensite 000-default.conf
# 启用rewrite模块
a2enmod rewrite
# 重启Apache服务,Docker环境无systemctl时使用service apache2 restart
systemctl restart apache2
  • 修正000-default.conf中的权限指令,适配Apache 2.4版本,修改后内容如下:
<VirtualHost *:80>
    DocumentRoot /var/www/html/webroot
    <Directory /var/www/html/webroot>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride All
        Require all granted
    </Directory>
</VirtualHost>
  • 修正项目目录权限,给Apache运行用户授予目录读写权限:
chown -R www-data:www-data /var/www/html
chmod -R 755 /var/www/html
  • 验证配置:重启Apache后再次访问站点根目录,即可正常加载webroot下的index.php文件。

内容的提问来源于stack exchange,提问作者R0bertinski

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 02:54:04