Yii2调试模式需同时满足四个条件:YII_ENV=dev、YII_DEBUG=true、debug模块注册、IP在allowedIPs白名单中,缺一不可;环境与IP配置最易被忽略。

Yii2 调试模式不是“开个开关”就自动生效的,它依赖四个条件同时满足:环境必须是 dev、YII_DEBUG 为 true、debug 模块已注册、你的访问 IP 在 allowedIPs 白名单中。缺一不可,尤其容易忽略环境配置和 IP 限制。
确保 YII_ENV=dev 且 YII_DEBUG=true
仅在 web/index.php 里写 define('YII_DEBUG', true) 不够。如果环境变量 YII_ENV 是 prod 或未定义,debug 模块根本不会加载。
- 检查 web/index.php 顶部是否设置了
putenv('YII_ENV=dev');,或通过echo YII_ENV;验证输出为dev - 运行命令
php yii查看当前环境提示;也可临时加一行var_dump(YII_ENV, YII_DEBUG);确认两者均为dev和true - 若用 Apache/Nginx,确认没在服务器配置中覆盖了环境变量(如
SetEnv YII_ENV prod)
正确注册 debug 模块并配置 allowedIPs
debug 模块必须在 config/web.php 的 YII_ENV_DEV 条件下注册,不能无条件写死;IP 白名单默认只放行 127.0.0.1 和 ::1,Windows WSL、macOS Docker 或局域网真机调试时会失效。
- 在 config/web.php 的
modules配置中使用三元判断:'modules' => YII_ENV_DEV ? ['debug' => ['class' => 'yii\debug\Module', 'allowedIPs' => ['127.0.0.1', '::1', '192.168.*']]] : [], - 开发时可临时设为
['*']快速验证,但切勿提交到 Git 或用于非本地环境 - 若用 Nginx 反向代理,需配置
trustedHosts并确保真实客户端 IP 透传(如设置proxy_set_header X-Real-IP $remote_addr;)
验证工具栏是否加载成功
底部没出现调试栏 ≠ debug 没开启。先确认能否手动访问调试页面,再排查前端资源问题。
- 直接访问
/debug/default/view?panel=db,能打开说明模块已启用,问题出在工具栏渲染环节 - 检查浏览器控制台是否有 404 报错,常见于
enablePrettyUrl => false导致 asset 路由失败;务必开启美化 URL - 清空 runtime/assets/ 和浏览器缓存,有时旧 JS/CSS 会阻断工具栏初始化
- 右下角看到 “
Console 命令调试别忘了 --interactive 和 --verbose
Web 页面有工具栏,命令行没有界面,得靠参数暴露执行细节。
- 运行迁移或自定义命令时,加上
--interactive:每步暂停确认,看清$this->confirm()返回值、输入内容、分支走向 - 加上
--verbose:日志升到 trace 级,显示完整 SQL、绑定参数、vendor 内部堆栈、语法错误行号 - 组合使用示例:
php yii migrate/up --interactive --verbose,你会看到每个 migration 类的实例化、SQL 执行耗时、AR 查询条件等











