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

smdnsysy  于 2023-03-07  发布在  PHP
关注(0)|答案(5)|浏览(284)

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

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

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

7fyelxc5

7fyelxc51#

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

xdebug.log_level = 0

希望在未来的xdebug版本中有其他的方法(恕我直言,这应该只是一个微弱的警告)。
EDIT:正如LazyOne所提到的,也可以在php.ini中为error_log设置一个值,例如/var/log/php_error.log,这样,日志条目就被写入这个文件,而不是发送到stderr。

lvmkulzt

lvmkulzt2#

在我的例子中,问题是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名称)中。
我建议至少检查他们文档的这一部分,因为有更多的信息,如果需要,您甚至可以做更多的微调。

lvmkulzt

lvmkulzt3#

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

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

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

qf9go6mv

qf9go6mv4#

如果你只需要抑制一个调用的输出,你可以使用这个-例如show version:XDEBUG_CONFIG="log_level=0" composer -v

wwwo4jvm

wwwo4jvm5#

这就是你所需要的:

xdebug.mode=debug
xdebug.start_with_request=yes
xdebug.discover_client_host=1

相关问题