Phpunit xdebug.start\u start\u with\u request=yes,如果调试客户端未侦听,则不会出错

Phpunit xdebug.start\u start\u with\u request=yes,如果调试客户端未侦听,则不会出错,phpunit,xdebug,xdebug-3,Phpunit,Xdebug,Xdebug 3,我曾经对Xdebug 2进行过以下配置: xdebug.default\u enable=1 当没有调试客户端正在侦听时,Xdebug不会减慢执行速度,但当我需要调试某些东西时,我只需在PhpStorm中启用侦听并刷新页面。此操作不需要浏览器扩展。同样的方法也适用于调试CLI应用程序,只是起了作用 我尝试通过以下配置使用Xdebug 3实现同样的效果: xdebug.mode=debug xdebug.start_start_with_request=yes 其工作原理相同,但每次在PhpSt

我曾经对Xdebug 2进行过以下配置:

xdebug.default\u enable=1

当没有调试客户端正在侦听时,Xdebug不会减慢执行速度,但当我需要调试某些东西时,我只需在PhpStorm中启用侦听并刷新页面。此操作不需要浏览器扩展。同样的方法也适用于调试CLI应用程序,只是起了作用

我尝试通过以下配置使用Xdebug 3实现同样的效果:

xdebug.mode=debug
xdebug.start_start_with_request=yes
其工作原理相同,但每次在PhpStorm中禁用调试侦听并运行CLI命令时,我都会收到以下错误严重性消息:

Xdebug: [Step Debug] Could not connect to debugging client. Tried: 172.17.0.1:9003 (through xdebug.client_host/xdebug.client_port) :-(
这是我可以接受的,但它也会使PHPUnit测试失败
bestrictaboutoutputturingtests=“true”
已启用

如果我使用了
xdebug.default\u enable=1
,升级建议使用
xdebug.module=develop
,但这不是一个有效的替代品

在我看来,完全关闭所有Xdebug日志,甚至禁用评论建议的PHP错误报告,都是一种肮脏的黑客行为,可能存在缺陷,而不是有效的解决方案


如果没有此消息,我如何保持预期的行为?

Xdebug 3现在在收到指示(通过
Xdebug.start\u with_request=1
或使用COOKIE或GET参数)且无法连接到IDE时发出警告。以前,很多人在让Xdebug工作时遇到了问题,有了这个警告对于他们指出某些地方出了问题非常有用

不显示错误消息的正确方法是根本不指示Xdebug连接到IDE

我建议使用
xdebug。首先使用\u request=trigger
,然后使用浏览器扩展名作为触发器(),或者在命令行上导出
export xdebug\u SESSION=yourname


设置
xdebug.log_level=0
意味着隐藏所有警告和错误,这使得无法调试任何东西。不要那样做。

谢谢你分享你对这个德里克的想法

设置xdebug.log_level=0意味着隐藏所有警告和错误,这使得无法调试任何东西。不要那样做

我根本不想这样做,但目前我看不到另一种方法来保持我在问题描述中解释的旧行为

以前,很多人在让Xdebug工作时遇到了问题,有了这个警告对于他们指出某些地方出了问题非常有用

我完全理解这种新行为背后的动机,我也认为它对很多人都有用。尽管如此,这一警告无法压制的事实可能会给那些知道自己在做什么的人带来问题

“他们在做什么”可能是个不恰当的短语,他们想要的可能更好

我们公司有一个使用xDebug 2的工作流,它不需要任何额外的浏览器扩展或环境变量(见上文),只需要在IDE和magic中启用侦听xDebug连接。。。这是一个有文档记录的解决方案,我们基于Docker的开发人员堆栈确保xDebug为每个开发人员提供OOTB。(同样,没有任何附加依赖项)

您是否建议xDebug 3不再支持此工作流


是否有可能向xDebug 3添加一个新配置,只允许抑制这些新警告并启用“专家模式”?

1)是的,您需要
xDebug.mode=debug
进行调试(如果需要,您也可以组合多个值,例如
xdebug.mode=debug,develope
,但如果您使用可选的验证工具,PhpStorm目前不了解这一点)。2)“没有此消息,我如何保持预期的行为?”您的
错误日志
配置值是多少?听起来像是空的。如果您将其指向有效文件(例如,
/var/log/php_error.log
),则此类错误消息将发送到该文件(Xdebug使用标准php错误日志;php(是,php)在您的std输出中打印它,因为未配置该值,并使您有机会看到它)。如果正确配置php的错误日志,则是一个“肮脏的黑客”对于您或您根本不想出于任何原因配置它。。。然后不要使用
xdebug.start_start_with_request=yes
并告诉xdebug它需要在需要时以其他方式调试此脚本(例如,在运行该脚本时将此类参数传递给PHP可执行文件,在PHP代码中使用
xdebug_break();
,设置xdebug环境变量等——检查xdebug文档)感谢您的想法,我通常使用WODBI/PHP进行开发,这是默认配置:目前,ErryLogLo配置不能通过该图像中的EVVAR来重写,所以我打开了一个问题:请考虑将您的解决方案作为一个答案(您可以接受您自己的答案)——为什么您选择了这个选项,为什么其他选项对您不可接受/不可用(无法控制它们等)。了解一些细节总是有帮助的。这将帮助许多处于类似情况下的其他用户,并且有了答案将使其更加可见/有用。谢谢。嗨,德里克,你能检查一下我上面的答案吗?谢谢(评论时间太长了)您是否找到了一个更好的解决方法,可能是使用他们添加的新环境变量
PHP\u XDEBUG\u LOG
PHP\u XDEBUG\u LOG\u LEVEL
?因为
xdebug.log_level=0
在使用cli(phpunit)运行时不会显示错误,但在测试完成后该过程不会完成。测试可能会在120毫秒内完成并显示结果,但进程仍在执行中(我的ide认为它仍在测试,这很烦人)超过10秒。注意:当启用日志级别时,它每秒显示您在问题中引用的错误10次。