Debian VPS部署Laravel遇403权限禁止访问问题求助
问题排查与解决方案
核心问题分析
你遇到的403禁止访问问题,主要源于三个关键错误:
- Apache虚拟主机的
DocumentRoot指向错误:Laravel的Web入口文件在public目录,而非项目根目录 - 权限命令完全搞反:目录需要执行权限才能进入,文件仅需读取权限,你的设置完全颠倒
- Apache权限指令冲突:Apache 2.4版本下,旧版
Order/Allow指令与新版Require指令混用会导致权限规则混乱
具体修复步骤
1. 修正Apache虚拟主机配置(/etc/apache2/sites-enabled/laravel.conf)
将配置修改为以下内容,重点调整DocumentRoot和清理冲突指令:
<VirtualHost *:80> ServerAdmin admin@example.com # 指向Laravel的public目录(核心修正) DocumentRoot /var/www/html/laravel_app/public <Directory /var/www/html/laravel_app/public> DirectoryIndex index.php Options Indexes FollowSymLinks AllowOverride All # 仅保留Apache 2.4标准权限指令 Require all granted </Directory> LogLevel debug ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost>
备注:如果没有用到3000端口,直接移除*:3000,避免不必要的端口监听
2. 重置并修正项目权限
执行以下命令修复权限问题:
# 重置所有目录权限为755(允许进入目录) sudo find /var/www/html/laravel_app -type d -exec chmod 755 {} \; # 重置所有文件权限为644(允许读取文件) sudo find /var/www/html/laravel_app -type f -exec chmod 644 {} \; # 给Laravel必须的可写目录赋予Apache用户权限 sudo chown -R www-data:www-data /var/www/html/laravel_app/storage /var/www/html/laravel_app/bootstrap/cache sudo chmod -R 775 /var/www/html/laravel_app/storage /var/www/html/laravel_app/bootstrap/cache
3. 确保Apache重写模块启用
sudo a2enmod rewrite
4. 重启Apache服务使配置生效
sudo systemctl restart apache2
修复逻辑说明
- 指向
public目录是Laravel标准部署要求:既保证入口文件正确识别,也避免.env等敏感文件暴露 - 正确的权限设置确保Apache(
www-data用户)能正常读取文件、进入目录,同时拥有storage目录的写入权限(Laravel需此存储日志、缓存等) - 清理冲突的Apache指令,避免权限规则互相覆盖导致的访问限制
内容的提问来源于stack exchange,提问作者user10659018
相关产品推荐
相关产品推荐

