必须彻底关闭yii3调试模块以防止敏感信息泄露;需删除config/common.php中debug模块注册、清除yii_debug环境变量,并验证/debug路由404、错误页无堆栈、响应头无x-debug-token。

Yii3项目部署完成后,必须彻底关闭调试信息,否则会向访客暴露敏感路径、类名、环境变量和数据库连接细节,直接导致服务器被攻击者测绘定位。
确认当前是否处于调试模式
打开项目根目录下的 config/common.php 文件,查找是否存在 'debug' => true 或 'yii\debug\Module' 的注册项。若存在,说明调试模块仍被启用。
这一步不能跳过——即使你删了入口文件的定义,只要 config/common.php 里还注册了 debug 模块,它就会在请求中自动加载并暴露面板。
移除调试模块注册
在 config/common.php 中定位到 'modules' => [...] 配置块,删除整个 'debug' => yii\debug\Module::class 及其关联配置(包括 'allowedIPs' 等)。
【不允许仅注释掉该行】 注释不会阻止模块被解析,PHP 仍会尝试实例化类,一旦依赖未安装或权限不足,将引发致命错误中断请求。
删除后保存文件,确保数组结构语法正确,避免因末尾逗号缺失或括号错位导致应用启动失败。
禁用调试相关环境变量
检查项目运行环境的环境变量设置,重点确认以下三项已被清除或设为 false:
方法一:在 Web 服务器配置中移除
Apache 的 .htaccess 或虚拟主机配置中,删除类似 SetEnv YII_DEBUG 1 的指令;
Nginx 的 fastcgi_param 块中,删除 fastcgi_param YII_DEBUG "1";
方法二:在 PHP-FPM 的 www.conf 中检查 env[YII_DEBUG] 行,将其值改为 0 或直接删除整行。
方法三:若使用 Docker,检查 docker-compose.yml 的 environment: 下是否残留 YII_DEBUG=1,必须删掉或改为 YII_DEBUG=0。
验证调试信息已不可访问
第一步:访问 /debug 路由,返回 404 或 403 即可。
第二步:故意触发一个错误(如访问不存在的控制器),确认页面不再显示堆栈跟踪、变量 dump 和文件路径。
第三步:用 curl 检查响应头:curl -I https://yoursite.com/health,确认响应中不含 X-Debug-Token 或 X-Debug-Token-Link 头。
只要任一检查失败,说明仍有调试痕迹残留,需回溯前三个步骤逐一排查。











