跳到主要内容

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 # 最近的错误

下一步