ThinkPHP 如何开启调试模式并记录 SQL 日志?

文章导读
ThinkPHP 开启调试模式主要修改项目根目录 `.env` 文件中的 APP_DEBUG 配置项,开启后框架会自动记录 SQL 日志到运行时目录。此操作仅限开发环境,生产环境开启会导致敏感信息泄露和性能下降。
📋 目录
  1. A 命令速用版
  2. B 为什么会这样
  3. C 分步处理
  4. D 怎么验证是否生效
  5. E 常见坑
  6. F 常见问题
  7. G 参考来源
A A

ThinkPHP 开启调试模式主要修改项目根目录 `.env` 文件中的 APP_DEBUG 配置项,开启后框架会自动记录 SQL 日志到运行时目录。此操作仅限开发环境,生产环境开启会导致敏感信息泄露和性能下降。

先说结论:开发环境直接修改 .env 文件开启 APP_DEBUG 即可自动记录 SQL,生产环境严禁开启。

  • 适合:本地开发调试、测试环境排查慢查询
  • 先准备:确认项目根目录存在 .env 文件,备份原配置
  • 验收:检查 runtime/log 目录是否生成 sql 日志或页面底部显示 SQL 信息

命令速用版

ThinkPHP 配置主要通过文件编辑完成,无需执行特定命令,修改后清除缓存即可生效。

# 编辑 .env 文件
APP_DEBUG = true

为什么会这样

调试模式开启后,ThinkPHP 会切换日志驱动级别并启用数据库监听机制。

框架内部通过 APP_DEBUG 常量控制错误显示和日志记录等级。当该值为 true 时,数据库组件会自动绑定日志监听器,将执行的 SQL 语句、绑定参数和执行时间写入日志文件或输出到页面调试栏。

分步处理

按照以下顺序修改配置并确认生效,避免配置冲突。

ThinkPHP 如何开启调试模式并记录 SQL 日志?
  1. 定位配置文件:在项目根目录找到 .env 文件,如果没有则复制 .example.env 并重命名。
  2. 修改调试开关:找到 APP_DEBUG 项,将其值改为 true。若不存在则新增一行。
  3. 清除缓存:删除 runtime 目录下的缓存文件,确保新配置被加载。
  4. 触发数据库操作:访问一个涉及数据库查询的页面,确保产生 SQL 记录。

怎么验证是否生效

通过查看日志文件或页面调试信息确认 SQL 是否被记录。

  • 日志文件:检查 runtime/log/ 目录下是否生成新的日志文件,内容包含 SQL 语句。
  • 页面调试栏:开启调试模式后,页面底部通常会显示执行 SQL 数量、时间和详细语句列表。
  • 控制台输出:部分版本配置下,SQL 信息会直接输出到浏览器控制台 Console 面板。

常见坑

  • 生产环境泄露:严禁在生产服务器开启 APP_DEBUG,否则会暴露数据库账号、路径和完整 SQL 结构。
  • 日志文件过大:长时间开启调试模式会导致日志文件迅速膨胀,占用磁盘空间。
  • 配置不生效:修改 .env 后未清除 runtime 缓存,导致旧配置仍然生效。

常见问题

生产环境可以开启调试模式吗?

不可以,生产环境开启调试模式会暴露敏感信息并降低性能,应使用独立的日志配置记录错误。

如何只记录 SQL 日志而不开启页面调试?

可以在配置文件中单独设置数据库日志开关,但通常建议通过日志驱动配置实现,避免开启全局 APP_DEBUG。

日志文件存放在哪里?

默认存放在项目根目录的 runtime/log 文件夹下,按日期生成文件。

参考来源

  • ThinkPHP 官方文档 - 配置与环境
  • ThinkPHP 官方文档 - 数据库操作