ThinkPHP6 500报错,开启错误日志查看原因
前言
ThinkPHP6网站突然500报错,页面啥也不显示,不知道哪错了?本文讲怎么开启错误显示和日志,快速定位问题。
一、为什么500不显示错误
生产环境为了安全,关闭了错误显示,直接返回500,不显示具体错误信息。
这是对的,不然用户能看到你的代码路径、数据库密码等敏感信息。
但排查问题就不方便了。
二、临时开启错误显示
修改 .env 文件
项目根目录下有个 .env 文件:
APP_DEBUG = true
把 APP_DEBUG 改成 true。
刷新页面,就能看到具体错误了。
注意
排查完记得改回 false! 生产环境不能开debug。
三、开启日志记录
就算不开debug,错误也会记录到日志文件里。
日志配置
config/log.php 文件:
return [
// 默认日志通道
'default' => 'file',
// 日志通道列表
'channels' => [
'file' => [
// 日志记录方式
'type' => 'File',
// 日志保存目录
'path' => '',
// 单文件日志写入
'single' => false,
// 独立日志级别
'apart_level' => [],
// 最大日志文件数量
'max_files' => 30,
],
],
];
日志位置
默认在 runtime/log/ 目录下。
按日期分目录:
runtime/log/
├── 2026-10/
│ ├── 08.log
│ ├── 07.log
│ └── 06.log
└── 2026-09/
└── ...
查看今天的错误
tail -f runtime/log/2026-10/08.log
四、常见500错误排查
1. 目录权限问题
runtime目录没权限写:
Permission denied
解决:
chmod -R 755 runtime
chown -R www:www runtime
2. 缺少扩展
Call to undefined function xxx()
解决: 装对应的PHP扩展。
3. 数据库连接失败
SQLSTATE[HY000] [1045] Access denied
检查: 数据库配置对不对。
.env 或 config/database.php:
'hostname' => '127.0.0.1',
'database' => '数据库名',
'username' => '用户名',
'password' => '密码',
4. 路由错误
Route not found
检查: 路由配置对不对。
5. 模板找不到
template not exists
检查: 模板文件路径对不对。
五、手动写日志
代码里可以手动写日志:
// 记录错误
Trace::error('这是一个错误信息');
// 记录警告
Trace::warning('这是一个警告');
// 记录信息
Trace::info('这是一个信息');
或者用助手函数:
trace('这是调试信息', 'debug');
六、查看PHP错误日志
除了ThinkPHP的日志,PHP本身也有错误日志。
查看PHP错误日志位置
php --ini | grep error_log
Nginx错误日志
tail -f /var/log/nginx/error.log
七、常见排查步骤
第一步:开debug看具体错误
改 .env:
APP_DEBUG = true
刷新页面,看具体报什么错。
第二步:看ThinkPHP日志
tail -f runtime/log/2026-10/08.log
第三步:看Nginx错误日志
tail -f /var/log/nginx/error.log
第四步:看PHP错误日志
tail -f /var/log/php-fpm/error.log
第五步:解决完改回debug
改完 .env:
APP_DEBUG = false
八、常见坑
坑1:开了debug还是不显示
缓存没清。
解决: 删除runtime目录下的缓存:
rm -rf runtime/cache/*
坑2:日志目录没权限
stream_socket_client(): unable to connect
runtime目录没写权限。
解决:
chmod -R 755 runtime
坑3:生产环境开着debug
危险!用户能看到你的敏感信息。
解决: 排查完立刻改回 APP_DEBUG = false。
坑4:日志太大占磁盘
日志越积越多,磁盘满了。
解决: 设 max_files,自动删除旧日志:
'max_files' => 30,
坑5:502和500搞混
- 500:PHP代码错误
- 502:PHP-FPM挂了
区分: 看Nginx错误日志。
总结
记住:
- 改
.env的APP_DEBUG = true临时看错误 - 生产环境必须改回
false - 日志在
runtime/log/目录 - 排查完记得清缓存
- 500是PHP代码问题,502是FPM问题
排查流程:
开debug → 看具体报错 → 看ThinkPHP日志 → 看Nginx日志 → 解决问题 → 关debug
遇到问题加QQ23979811 协助处理