当在CLI中使用Xdebug 3时,如果没有设置断点,它会不断地报告以下信息:
"Xdebug: [Step Debug] Could not connect to debugging client. Tried: localhost:9003 (through xdebug.client_host/xdebug.client_port) :-("
有没有办法在CLI中禁用该消息表单的显示?
不幸的是,禁用此错误的唯一方法是在xdebug.ini中通常禁用所有错误和警告:
xdebug.log_level = 0
希望在未来的xdebug版本中有其他方法(在我看来,这应该只是一个轻微的警告)。
编辑:正如LazyOne所提到的,还可以在php.ini
中为error_log
设置一个值,例如/var/log/php_error.log
。通过这种更改,日志条目将写入此文件而不是发送到stderr。
xdebug.log_level
值,即 7
)。也许是一些输出重定向(错误输出流或类似的东西)。 - LazyOneecho "<?php" | php
命令,我得到了以下信息:"Xdebug: [Step Debug] Could not connect to debugging client. Tried: localhost:9003 (through xdebug.client_host/xdebug.client_port) :-(" - Herbert Scheffknechterror_log
PHP设置的价值是什么(例如,从phpinfo()输出或仅使用ini_get('error_log');)。我相信它将是空的(或者可能是一些错误的位置)。如果您将其设置为某个适当的位置(例如,类似于“/var/log/php_error.log”或甚至是“/dev/null”,这取决于您的操作系统和发行版),那么您应该不会在第一次看到这样的错误。你可以这样做并检查你在这里的第一条评论中所做的相同的事情吗? - LazyOneXdebug:[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名称)中。
我建议至少查看他们的文档的那一部分,因为那里有更多信息,如果需要,您甚至可以进行更精细的调整。
从3.1版本开始,如果您设置了日志文件的路径,xdebug将不再将其日志重定向到php日志中。在我的情况下,我使用以下设置,这些消息不再在控制台上刺眼。
xdebug.log=/var/www/var/log/xdebug.log
xdebug.log_level=3
XDEBUG_CONFIG="log_level=0" composer -v
php -d xdebug.log_level=0 your_sript.php
xdebug.start_with_request = trigger
这就是你需要的:
xdebug.mode=debug
xdebug.start_with_request=yes
xdebug.discover_client_host=1
phpinfo()
或者xdebug_info()
中的Xdebug部分。 - LazyOnephpinfo()
/php -i
输出,我可以与我的进行比较……因为当我执行相同操作时,我没有看到这样的警告(我在Windows上……但我不认为这会有任何区别)。现在我认为这可能是xdebug.XXX
选项之一……或者可能是如何处理error_log
(因为通常会将此类消息写入其中)。 - LazyOnexdebug.remote_autostart = yes
是 Xdebug v2 的选项,而 Xdebug v3 则使用xdebug.start_with_request = yes
。详情请参见 https://xdebug.org/docs/upgrade_guide。我已经检查了所有我能想到的选项,但无法找到强制打印此条目到正常输出的选项(除非某种 PHP 错误日志重定向,因为这是此类消息通常所在的位置)。我没有更好的想法(除了可能检查 Xdebug 的 Bug 跟踪器以获取可能的票据),因此在这里使用xdebug.log_level = 0
看起来是一个不错的解决方案。 - LazyOneerror_log
设置。 - LazyOne