部署Laravel项目报403或500错误,核心原因是宝塔面板三处配置未对齐:网站根目录必须设为public目录,伪静态需用Laravel5模板或手动配置location / { try_files $uri $uri/ /index.php?$query_string; },storage和bootstrap/cache目录须执行chown -R www:www并设为775权限,同时PHP版本需满足Laravel对应要求(如Laravel 10需PHP ≥ 8.1),最后清空config:clear、cache:clear、view:clear及重建config:cache。

部署Laravel项目时,网站打开直接报403 Forbidden或500 Internal Server Error,不是代码写错了,而是宝塔面板上几个关键配置没对——根目录、伪静态、权限三处错一个,页面就挂掉。
确认网站根目录指向public文件夹
在宝塔面板「网站」→ 找到你的站点 → 点击「设置」→「网站目录」→ 将「网站根目录」改为 【/www/wwwroot/your_project/public】。
这一步必须做。Laravel的入口文件index.php只放在public目录下,如果根目录设成项目根目录(如/your_project),Nginx会尝试加载/your_project/index.php,而它根本不存在,直接返回403。
改完立即点击右上角「保存」,不用重启服务,但需清浏览器缓存再测试。
配置Laravel专用伪静态规则
方法一:宝塔内置模板一键套用
在网站设置 → 「伪静态」选项卡 → 下拉选择「Laravel5」→ 点击「保存」。
方法二:手动粘贴Nginx规则(适用于宝塔未提供模板或需微调)
复制以下内容,粘贴进伪静态编辑框:
location / {
try_files $uri $uri/ /index.php?$query_string;
}
注意:不要漏掉最后的分号,且location /必须顶格写,缩进错误会导致Nginx重载失败。
修复storage和bootstrap/cache目录权限
第一步:通过SSH连接服务器,进入项目根目录
第二步:执行权限修正命令
chown -R www:www /www/wwwroot/your_project
find /www/wwwroot/your_project -type d -exec chmod 755 {} \;
find /www/wwwroot/your_project -type f -exec chmod 644 {} \;
第三步:单独放开两个运行时目录
chmod -R 775 /www/wwwroot/your_project/storage
chmod -R 775 /www/wwwroot/your_project/bootstrap/cache
这一步不能跳过。storage目录要写日志和缓存,cache目录要存框架编译后的路由与配置,权限不足会触发500错误;但也不能全设777——宝塔面板里选用户组【www】比选root更安全,否则PHP进程无法写入。
检查PHP版本是否达标
在宝塔「软件商店」→ 找到当前网站绑定的PHP版本 → 点击「设置」→「版本管理」→ 查看PHP版本号。
Laravel 9要求PHP ≥ 8.0,Laravel 10要求PHP ≥ 8.1,Laravel 11要求PHP ≥ 8.2。
如果显示PHP 7.4或更低,必须升级PHP版本,否则哪怕其他全部正确,也会在加载框架时因语法不兼容直接报500。
升级后,在网站设置 → 「PHP版本」下拉框中切换为新版本,再重启PHP服务。
清空Laravel运行缓存
进入项目根目录,依次执行:
php artisan config:clear → php artisan cache:clear → php artisan view:clear
如果已启用配置缓存,还必须补上:php artisan config:cache
不清理缓存,旧的错误配置可能仍在内存中生效,导致改了伪静态或权限也看不到效果。


















