最优先查看storage/logs/laravel.log,500错误本质是php未捕获异常,laravel默认将完整堆栈写入该文件;需确保目录权限为775且属组与web服务器一致,app_debug=true并执行config:clear后刷新即可看到彩色详细错误页。

直接看 storage/logs/laravel.log,这是最优先、最有效的起点。500 错误本质是 PHP 未捕获异常,Laravel 默认会把完整堆栈写进这个文件——只要它能写进去。
先确保日志能记下来
如果日志文件为空,或报 “failed to open stream”,说明写入失败,后续所有排查都白搭:
- 检查
storage/和storage/logs/目录权限:推荐775,所属用户组必须和 Web 服务器一致(如www-data、nginx或宝塔的www) - 用命令验证:
ls -l storage/logs看归属与权限;再执行php -r "file_put_contents('storage/logs/test.log', 'ok');"测试是否可写 - 宝塔用户注意:在面板文件管理器中修改权限时,用户组要选对(通常是
www),别只改数字不改组
让错误内容真正露出来
日志有内容但只有模糊提示(比如 “production error”),大概率是调试关了:
- 打开
.env,确认这两行:APP_DEBUG=trueAPP_ENV=local(或development) - 改完立刻清缓存:
php artisan config:clear,否则 .env 变更不生效 - 刷新页面,你会看到带颜色、带文件行号的详细错误页,比日志还直观
盯住日志实时复现问题
别等出错后再翻文件,边操作边看:
- 终端执行:
tail -f storage/logs/laravel.log - 在浏览器或 Postman 中触发一次出错请求(比如点登录、提交表单)
- 终端会立刻打出完整堆栈,第一行就是真实错误,例如:
Class 'App\Http\Controllers\XXXController' not foundTrying to get property 'name' of null
查不到日志?错误可能卡在框架启动前
首页能打开,但 POST 接口(如 /login)持续 500,且日志和 Nginx error_log 都没记录——说明问题发生在 Laravel 初始化阶段:
- 立即运行:
php artisan config:clear && php artisan cache:clear && rm -f bootstrap/cache/*.php - 重点检查
bootstrap/cache/config.php:迁移或部署后它常残留旧配置(错误数据库地址、空 APP_KEY、过期密钥),导致框架根本起不来 - 确认
.env中APP_KEY存在且有效,缺失就补:php artisan key:generate --force











