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

Laravel+Inertia本地正常,生产环境硬刷新报500错误求助

Laravel + Inertia 生产环境硬刷新500错误排查方案

1. 先查具体错误日志

  • 查看Laravel内置日志:storage/logs/laravel.log,找到硬刷新触发的错误条目,这是定位问题的核心依据。
  • 同时检查Web服务器日志:Nginx日志路径通常是/var/log/nginx/error.log,Apache是/var/log/apache2/error.log,确认请求是否正常到达Laravel应用。

2. 校验服务器重写规则

Inertia依赖前端路由,硬刷新时需要Web服务器将所有非静态资源请求转发到index.php:

  • Nginx配置:在站点配置块中添加或确认规则:
    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }
    
  • Apache配置:确保开启mod_rewrite模块,且项目根目录的.htaccess包含正确规则:
    <IfModule mod_rewrite.c>
        RewriteEngine On
        RewriteRule ^(.*)$ public/$1 [L]
    </IfModule>
    
    若Laravel直接部署在根目录,调整规则指向public/index.php。

3. 修复目录权限

Laravel需要对storage和bootstrap/cache目录有读写权限,执行以下命令:

chmod -R 775 storage bootstrap/cache
chown -R www-data:www-data storage bootstrap/cache

(www-data为Web服务器默认用户,CentOS系统替换为apache)

4. 检查环境变量配置

  • 确认.env中APP_KEY已生成:未设置则执行php artisan key:generate --force
  • 验证APP_URL与生产服务器域名一致
  • 检查数据库连接参数(DB_HOST、DB_DATABASE等)是否正确,硬刷新时后端渲染会调用ProjectRepository::getList,数据库配置错误会直接触发500。

5. 确认前端资源编译状态

  • 必须在生产环境执行前端编译:npm run build(或yarn build),Inertia依赖编译后的静态资源完成渲染。
  • 检查vite.config.js或webpack.mix.js中的资源路径配置,确保生产环境资源URL正确。

6. 排查业务代码问题

根据日志错误信息,重点检查ProjectRepository::getList方法:

  • 是否存在生产环境数据异常(如本地有数据、生产环境为空导致数组索引错误)
  • 是否使用了本地环境存在但生产环境未安装的PHP扩展或依赖

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 18:12:42