在 Ubuntu 上用 Apache 出现 403 Forbidden,常见原因就那么几类,我按「出现频率」给你排一下,基本对照就能找到问题。
Apache 运行的用户一般是 www-data,如果它没法读你的网站目录,就会 403。
ps aux | grep apache
看到用户通常是 www-data
sudo chown -R www-data:www-data /var/www/html
sudo chmod -R 755 /var/www/html
⚠️ 注意:
755644如果你改过站点配置,但路径不对:
sudo nano /etc/apache2/sites-enabled/000-default.conf
确认:
DocumentRoot /var/www/html
改完重启:
sudo systemctl restart apache2
如果目录里没有 index.html 或 index.php,而且没开目录浏览:
<Directory /var/www/html>
Options -Indexes
</Directory>
就会 403。
index.htmlOptions +Indexes
常见错误配置:
Require all denied
应该是:
Require all granted
示例:
<Directory /var/www/html>
AllowOverride All
Require all granted
</Directory>
改完:
sudo a2enmod rewrite
sudo systemctl restart apache2
Ubuntu 默认用 AppArmor,不太会拦,但如果你挂载了外部磁盘:
df -h
如果网站在 /mnt/xxx,可能权限不够。
比如你访问:
http://ip/test/
但 test 目录没权限或没 index 文件
sudo tail -n 50 /var/log/apache2/error.log
日志里通常会直接写原因,比如:
client denied by server configurationPermission denied: /var/www/htmlwww-dataRequire all granted如果你愿意,把下面信息发我,我可以直接帮你定位:
error.log 报错内容我可以一步一步帮你改到能访问为止。