我正在使用
Intellij 14.1.4、PHP v5.5.38、Xdebug v2.2.3
我做了一个更改,定义了 php $GLOBALS['CRED_TYPE'] 变量。我后来删除了该变量。我检查了所有地方,这个变量不再在任何地方定义。它只是不存在于我的代码中。
但由于某种原因我仍然遇到以下问题
( ! ) 致命错误:第 1 行 xdebug://debug-eval 中未捕获异常“ErrorException”,并带有消息“未定义索引:CRED_TYPE” (!)ErrorException:未定义索引:第 1 行 xdebug://debug-eval 中的 CRED_TYPE
我什至重新克隆了整个项目,但每当我尝试调试它时,它就会丢失(崩溃),有时我会遇到此异常。这不应该在那里,因为没有这样的代码,但为什么我会得到这个。
文件也没有回溯。我不知道该怎么办,请问有什么想法吗?
解码错误消息的关键是失败代码的位置:
xdebug://debug-eval on line 1
。它不是一个文件,而是由调试器动态生成和评估的代码。
每次将脚本停止到调试器中时,调试器客户端(PhpStorm、NetBeans 等)都会针对每个监视的表达式向
xdebug
PHP 扩展(调试器服务器组件)发送一个 eval()
命令。此代码在代码的当前范围内运行(脚本停止的位置)。
由于没有
$CRED_TYPE
全局变量,计算表达式 $GLOBALS['CRED_TYPE']
会产生一个通知(“未定义的索引:CRED_TYPE'”),并且项目设置的自定义错误处理程序会生成并抛出一个 ErrorException
它。异常未捕获,脚本异常结束。
确保调试器的“监视”窗口中的表达式列表不包含在放置断点的代码范围内无效的表达式。
这是 XDEBUG 问题,可以通过将 XDEBUG 版本降级(或者升级,如果您使用的是非常旧的 PHP)到 2.6.1 来解决。 我无意中遇到了这个问题,但找不到答案。重新安装服务器、PHP、PHPStorm、不同版本的 XDEBUG 都没有帮助。 对于 MacOS 可以使用
pecl install xdebug-2.6.1
如果您已经有较新的版本,您可以使用命令
pecl uninstall xdebug
经过几个小时的调查,这篇文章中的答案对我帮助很大。
添加答案只是为了让 @axiac 和 @globalSchmidt 评论有更多可见性。
检查调试器中的 Watch 表达式。错误的根源可能就在那里。