ThinkPHP 开启调试模式主要修改项目根目录 `.env` 文件中的 APP_DEBUG 配置项,开启后框架会自动记录 SQL 日志到运行时目录。此操作仅限开发环境,生产环境开启会导致敏感信息泄露和性能下降。
先说结论:开发环境直接修改 .env 文件开启 APP_DEBUG 即可自动记录 SQL,生产环境严禁开启。
- 适合:本地开发调试、测试环境排查慢查询
- 先准备:确认项目根目录存在 .env 文件,备份原配置
- 验收:检查 runtime/log 目录是否生成 sql 日志或页面底部显示 SQL 信息
命令速用版
ThinkPHP 配置主要通过文件编辑完成,无需执行特定命令,修改后清除缓存即可生效。
# 编辑 .env 文件
APP_DEBUG = true为什么会这样
调试模式开启后,ThinkPHP 会切换日志驱动级别并启用数据库监听机制。
框架内部通过 APP_DEBUG 常量控制错误显示和日志记录等级。当该值为 true 时,数据库组件会自动绑定日志监听器,将执行的 SQL 语句、绑定参数和执行时间写入日志文件或输出到页面调试栏。
分步处理
按照以下顺序修改配置并确认生效,避免配置冲突。
- 定位配置文件:在项目根目录找到
.env文件,如果没有则复制.example.env并重命名。 - 修改调试开关:找到
APP_DEBUG项,将其值改为true。若不存在则新增一行。 - 清除缓存:删除
runtime目录下的缓存文件,确保新配置被加载。 - 触发数据库操作:访问一个涉及数据库查询的页面,确保产生 SQL 记录。
怎么验证是否生效
通过查看日志文件或页面调试信息确认 SQL 是否被记录。
- 日志文件:检查
runtime/log/目录下是否生成新的日志文件,内容包含 SQL 语句。 - 页面调试栏:开启调试模式后,页面底部通常会显示执行 SQL 数量、时间和详细语句列表。
- 控制台输出:部分版本配置下,SQL 信息会直接输出到浏览器控制台 Console 面板。
常见坑
- 生产环境泄露:严禁在生产服务器开启 APP_DEBUG,否则会暴露数据库账号、路径和完整 SQL 结构。
- 日志文件过大:长时间开启调试模式会导致日志文件迅速膨胀,占用磁盘空间。
- 配置不生效:修改 .env 后未清除 runtime 缓存,导致旧配置仍然生效。
常见问题
生产环境可以开启调试模式吗?
不可以,生产环境开启调试模式会暴露敏感信息并降低性能,应使用独立的日志配置记录错误。
如何只记录 SQL 日志而不开启页面调试?
可以在配置文件中单独设置数据库日志开关,但通常建议通过日志驱动配置实现,避免开启全局 APP_DEBUG。
日志文件存放在哪里?
默认存放在项目根目录的 runtime/log 文件夹下,按日期生成文件。
参考来源
- ThinkPHP 官方文档 - 配置与环境
- ThinkPHP 官方文档 - 数据库操作