Ubuntu 下 Apache2 报 403 Forbidden 是很常见的问题,本质原因通常是:Apache 没有权限访问你请求的资源。下面按「最常见 → 较少见」帮你系统梳理一下。
Apache 运行用户是 www-data,它必须能进入目录、能读文件。
✅ 正确示例:
sudo chown -R www-data:www-data /var/www/html
sudo chmod -R 755 /var/www/html
❌ 常见错误:
root:root 且权限 700x 权限(无法进入)Directory 禁止访问检查配置文件(如 /etc/apache2/sites-enabled/000-default.conf):
<Directory /var/www/html>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
❌ 错误示例:
Require all denied
修改后重启:
sudo systemctl restart apache2
如果目录里没有:
index.htmlindex.php而配置是:
Options -Indexes
就会 403
✅ 解决:
index.html例如你配的是:
DocumentRoot /home/user/site
但 Apache 默认还是 /var/www/html
✅ 确认:
apache2ctl -S
Ubuntu 一般用 AppArmor
检查:
sudo aa-status
如果 /var/www 外目录被限制,可能 403
.htaccess 写错例如:
Deny from all
或 RewriteRule 死循环
sudo chmod +x index.php
Options FollowSymLinks
否则软链接目录会 403
# 1. 看错误日志
sudo tail -f /var/log/apache2/error.log
# 2. 看目录权限
namei -l /var/www/html/index.html
# 3. 看 Apache 配置
apache2ctl configtest
你可以直接把下面信息发我,我可以精准定位:
error.log 报错内容我可以一步一步帮你修到不 403 ✅