在 CLI 中禁用 Xdebug 3“无法连接”消息

问题描述 投票:0回答:7

在 CLI 中使用 Xdebug 3 时,如果没有设置断点,它会不断报告消息:

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

有没有办法禁用 CLI 中显示的消息表单?

php xdebug xdebug-3
7个回答
31
投票

不幸的是,禁用此错误的唯一方法是禁用 xdebug.ini 中的所有错误和警告:

xdebug.log_level = 0

希望未来的 xdebug 版本中还有其他方法(恕我直言,这应该只是一个弱警告)。

编辑:正如LazyOne提到的,也可以在

error_log
中为
php.ini
设置一个值,例如
/var/log/php_error.log
。进行此更改后,日志条目将写入此文件,而不是发送到 stderr。


11
投票

在我的例子中,问题是 Xdebug 尝试在每个请求上运行,因为我没有对每个页面刷新错误进行调试,如

Xdebug: [Step Debug] Could not connect to debugging client
被报告并且可以理解。

使用

xdebug.log_level = 0
的最明显的解决方案当然有效,但对于我来说,这种方法太宽泛、太盲目了。所以我检查了文档,我认为消除该错误的最佳方法是告诉Xdebug何时应该真正运行,何时不应该运行,所以在我的情况下正确的选择是:

xdebug.start_with_request = trigger

正如文档所述:

该功能仅在特定触发器被激活时才会激活 当请求开始时出现。

触发器的名称是 XDEBUG_TRIGGER,Xdebug 检查它的 存在于 $_ENV(环境变量)、$_GET 或 $_POST 中 变量,或 $_COOKIE(HTTP cookie 名称)。

我建议至少检查他们的文档的那部分,因为有更多信息,如果需要,您甚至可以进行更多微调。


6
投票

从 3.1 版本开始,如果设置了日志文件的路径,xdebug 不会将其日志重定向到 php 日志。就我而言,我使用以下设置,控制台中的这些消息不再让人眼花缭乱

xdebug.log=/var/www/var/log/xdebug.log
xdebug.log_level=3

此问题的PR:https://github.com/xdebug/xdebug/pull/738


0
投票

如果您只需要抑制一次调用的输出,您可以使用它 - 例如显示版本:

XDEBUG_CONFIG="log_level=0" composer -v


0
投票

将 php.ini 'xdebug.start_with_request' 形式 'yes' 更改为 'trigger' 解决了我的问题,我使用 MAMP。

xdebug.start_with_request = trigger

0
投票

如果您正在运行 PHP 脚本或命令,您可以使用 -d: 设置 INI 条目

php -d xdebug.log_level=0 your_sript.php

-4
投票

这就是您所需要的:

xdebug.mode=debug
xdebug.start_with_request=yes
xdebug.discover_client_host=1
© www.soinside.com 2019 - 2024. All rights reserved.