ThinkPHP6.0调试模式必须通过.env文件设置APP_DEBUG=true开启,config/app.php中的app_debug配置无效;.env需无BOM、权限正确,且依赖topthink/think-trace扩展才能显示Trace面板。

调试模式必须靠 .env 文件开启,不是改 config/app.php
ThinkPHP6.0 的调试开关由环境变量 APP_DEBUG 控制,它只在 .env 文件中生效。即使你在 config/app.php 里硬编码 'app_debug' => true,只要 .env 里没设或设为 false,调试模式依然关闭。
正确做法是:把项目根目录的 .example.env 重命名为 .env,并确保包含这一行:
APP_DEBUG=true
常见错误现象:
- 改了
app.php里的app_debug却看不到 Trace 面板 -
.env文件权限不对(如 Windows 下被记事本另存为带 BOM 的 UTF-8),导致框架读取失败,APP_DEBUG实际为null - 部署到服务器后忘记删
.env或改成APP_DEBUG=false,泄露数据库密码等敏感信息
dump() 和 halt() 是最常用的变量输出方式
比起原生 var_dump(),dump() 自动判断是否在 CLI 或 HTTP 环境,输出更友好;halt() 则会在输出后立即终止执行,适合快速定位某段逻辑是否走到。
立即学习“PHP免费学习笔记(深入)”;
使用场景:
- 查数据库查询结果:
dump(Db::table('user')->where('id', 1)->find()); - 中断流程验证入口点:
halt($request->param()); - 多个变量同时看:
dump($data, $config, $user);
注意:dump() 在非调试模式下默认不输出,且不会写入日志;若需持久化记录,请用 Log::debug()。
Trace 面板依赖 topthink/think-trace 扩展,不是框架内置
TP6.0 默认不打包 Trace 功能,它由独立扩展 topthink/think-trace 提供。如果你执行过 composer install --no-dev 或手动删过 vendor/topthink/think-trace,页面右下角就不会出现那个 LOGO 图标。
恢复方法很简单:
- 运行
composer require topthink/think-trace - 确认
APP_DEBUG=true已生效 - 访问一个有 HTML 输出的接口(纯 API 接口不会触发 Trace 渲染)
Trace 的六个默认选项卡(基本、文件、流程、错误、SQL、调试)可定制,修改 config/trace.php 中的 tabs 数组即可。例如合并调试与 info 级别:'debug|info' => '调试'。
日志写不进 runtime/log/?先检查目录权限和 log.php 配置
runtime/log/ 目录必须可写,否则 Log::error() 等调用会静默失败。Linux/macOS 下常因用户权限错位导致,Windows 下则多因杀毒软件拦截或路径含中文。
关键配置项在 config/log.php:
-
'default' => 'file':确保默认驱动是 file,不是 trace 或 error_log -
'path' => env('LOG_PATH', runtime_path('log/') . DS):检查LOG_PATH环境变量是否被误覆盖 -
'level' => ['error', 'warning', 'info', 'debug']:若只看到 error 日志,可能是 level 设得太窄
临时验证日志是否工作,可在控制器里写一行:Log::info('test at ' . date('Y-m-d H:i:s'));,然后立刻去 runtime/log/202605/ 下找最新生成的文件。
真正容易被忽略的是:日志只在调试模式开启时自动轮转并按日期分目录;部署模式下若未显式配置,可能全堆在同一个文件里,或者因权限问题根本写不进去。



















