PHP Xdebug不显示变量且提示POST超全局未定义 程序正常运行是什么原因
XAMPP环境下Xdebug无法读取超全局变量的常见原因
- PHP
auto_globals_jit配置开启
PHP 7.4及以上版本默认开启auto_globals_jit指令,该配置会让$_POST、$_GET等超全局变量仅在首次被代码调用时才完成初始化。如果你的断点设置在超全局变量首次被调用的位置之前,Xdebug就无法读取到未初始化的超全局变量值,显示未定义。而程序运行到调用位置后会自动完成初始化,所以实际运行无异常。 - Xdebug参数配置错误
若php.ini中Xdebug相关的采集参数配置不当,也会导致变量无法正常展示:xdebug.collect_vars未设为1(仅适用于Xdebug 2):该参数控制Xdebug是否采集当前作用域的变量信息xdebug.show_local_vars未设为1:该参数控制Xdebug是否在断点上下文展示本地作用域的所有变量- Xdebug 3未正确配置模式:Xdebug 3已弃用旧版本的变量采集开关,需设置
xdebug.mode=debug才能开启调试模式下的完整变量采集能力,使用旧版本参数会导致采集功能失效
- 断点位置设置不合理
如果断点加在PHP入口文件的最顶部,甚至是PHP处理请求解析全局变量的阶段之前,此时PHP还未完成请求参数的解析和超全局变量的赋值,Xdebug自然无法读取到对应变量。 - IDE的Xdebug集成配置问题
部分IDE默认会开启Xdebug的懒加载变量评估优化,仅在你展开变量面板时才主动去读取变量值,若IDE和Xdebug的通信存在小故障,也会出现首次查看变量显示未定义的情况,手动点击变量面板的刷新按钮即可正常加载。
内容的提问来源于stack exchange,提问作者Dhammika Wijesinghe
相关产品推荐
相关产品推荐

