我过去在Xdebug 2中有以下配置:
xdebug.default_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测试失败beStrictAboutOutputDuringTests="true"
被启用。
如果我使用了xdebug.default_enable=1
,升级指南建议使用xdebug.module=develop
,但这不是有效的替代品。
在我看来,完全屏蔽所有Xdebug日志,甚至禁用此评论建议的PHP错误报告,都是一种肮脏的黑客行为,可能存在缺陷,而不是有效的解决方案。
如果没有此消息,我如何保持预期的行为?
Xdebug 3现在在收到指示(通过xdebug.start_with_request=1
或使用COOKIE或GET参数(并且无法连接到您的IDE时发出警告。以前,很多人在让Xdebug工作时遇到了问题,发出这个警告对他们指出问题非常有用。
不显示错误消息的正确方法是根本不指示Xdebug连接到IDE。
我建议使用xdebug.start_with_request=trigger
,然后使用任一浏览器扩展插件作为触发器(https://xdebug.org/docs/step_debug#browser-扩展(,或者通过在命令行上导出export XDEBUG_SESSION=yourname
。
设置xdebug.log_level=0
意味着隐藏所有警告和错误,从而无法调试任何内容。不要那样做。
感谢您分享您对Derick的看法。
将xdebug.log_level设置为0意味着隐藏所有警告和错误,从而无法调试任何内容。不要那样做。
我根本不想这样做,但目前我看不到另一种方法来保持我在问题描述中解释的旧行为。
以前很多人在让Xdebug工作时遇到问题,发出这个警告对他们指出问题非常有用。
我完全理解这种新行为背后的动机,我也认为它对许多人有用。尽管如此,这个警告不能被压制的事实可能会给那些知道自己在做什么的人带来问题。
嗯,";他们在做什么";也许是一个不恰当的短语,他们想要的可能更好。。。
我们公司的xDebug 2工作流程不需要任何额外的浏览器扩展或环境变量(见上文(,只需要在IDE中启用监听xDebug连接,就可以了。。。这是一个文档化的解决方案,我们基于Docker的开发人员堆栈确保xDebug为每个开发人员提供OOTB。(同样,没有任何额外的依赖性(
您是否建议xDebug 3不再支持此工作流?
是否有机会向xDebug 3添加一个新的配置,该配置将只允许抑制这些新的警告并启用";专家模式";?