在 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 提到的,也可以为error_log
in设置一个值php.ini
,例如/var/log/php_error.log
。通过该更改,日志条目将写入此文件,而不是发送到 stderr。
在我的情况下,问题是 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 名称)中。
我建议至少检查他们文档的那一部分,因为有更多信息,如果需要,您甚至可以进行更多微调。
从 3.1 版本开始,如果您设置日志文件的路径,xdebug 不会将其日志重定向到 php 日志。就我而言,我使用以下设置,这些消息不再使控制台中的眼睛眼花缭乱
xdebug.log=/var/www/var/log/xdebug.log
xdebug.log_level=3
这就是你需要的:
xdebug.mode=debug
xdebug.start_with_request=yes
xdebug.discover_client_host=1