500 错误与调试
如何诊断和修复 500 内部服务器错误。
第一步:检查日志
这是最重要的一步。Laravel 将所有错误记录到:
tail -100 storage/logs/laravel.log
此命令会显示确切的错误消息、文件名和行号。
第二步:临时启用调试模式
APP_DEBUG=true
刷新页面 — 您将看到包含以下内容的详细错误页面:
- 错误消息
- 堆栈追踪
- 请求详情
- 环境信息
注意
调试完成后请立即设置 APP_DEBUG=false!
常见 500 错误
"The stream or file could not be opened"(无法打开流或文件)
原因: 存储权限问题。
sudo chmod -R 775 storage bootstrap/cache
sudo chown -R www-data:www-data storage bootstrap/cache
"No application encryption key has been specified"(未指定应用加密密钥)
原因: 缺少或无效的 APP_KEY。
php artisan key:generate
"SQLSTATE[HY000] Connection refused"(数据库连接被拒绝)
原因: 数据库连接失败。
检查 .env 中的数据库设置,确保 MySQL 正在运行。
"Class 'X' not found"(找不到类)
原因: Composer 依赖项缺失。
composer install --no-dev --optimize-autoloader
php artisan config:clear
"View [x] not found"(找不到视图)
原因: 视图文件缺失或损坏。
php artisan view:clear
如果文件确实缺失,请从原始下载包中重新上传。
"Maximum execution time exceeded"(超出最大执行时间)
原因: 长时间运行的操作(备份、迁移、AI 分析)。
增大 PHP 超时设置:
max_execution_time = 300
收集调试信息以获取支持
报告问题时,请包含以下信息:
php -v # PHP 版本
php artisan --version # Laravel 版本
mysql --version # MySQL 版本
cat .env | grep -E "^(APP_|DB_|MAIL_|QUEUE_)" # 配置(不含密码!)
tail -50 storage/logs/laravel.log # 最近的错误