4

I used to have the following configuration with Xdebug 2:

xdebug.default_enable=1

Xdebug did not slow down execution when no debug client was listening but when I needed to debug something then I only had to enable the listening in PhpStorm and refresh the page. No browser extension was needed for this. The same applied for debugging CLI applications, it just worked.

I tried to achieve the same with Xdebug 3 with the following configuration:

xdebug.mode=debug
xdebug.start_start_with_request=yes

It works the same BUT every time when I disable debug listening in PhpStorm and run a CLI command I get the following message with error severity:

Xdebug: [Step Debug] Could not connect to debugging client. Tried: 172.17.0.1:9003 (through xdebug.client_host/xdebug.client_port) :-(

This is something that I could live with but it also makes PHPUnit tests fails beStrictAboutOutputDuringTests="true" is enabled.

The upgrade guide suggest to use xdebug.module=develop if I used xdebug.default_enable=1 but that is not a valid replacement.

Completely silencing ALL Xdebug logs or even disabling error reporting in PHP suggested by this comment looks a dirty hack to me with possible drawbacks instead of a valid solution.

How can I keep the expected behavior without this message?

4

2 回答 2

5

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-extensionsexport XDEBUG_SESSION=yourname ),或者在命令行上导出。

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

于 2021-01-11T16:24:59.400 回答
4

感谢您分享您对这个 Derick 的看法。

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

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

以前,很多人在让 Xdebug 工作时遇到问题,而这个警告对他们指出出现问题非常有用。

我完全理解这种新行为背后的动机,我也看到它对许多人有用。虽然,无法抑制此警告这一事实可能会给那些知道自己在做什么的人带来问题。

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

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

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

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

于 2021-01-14T18:43:35.537 回答