【发布时间】:2021-08-26 11:40:26
【问题描述】:
假设我有两个微服务在两个不同的 Docker 容器中运行:ServiceA 和 ServiceB。 ServiceA 向 ServiceB 发出 HTTP 请求,然后这个请求返回一个响应。如果可能的话,我希望能够在ServiceA(PhpStorm 的实例)中启动我的调试会话,并在发送呼叫后将其切换到ServiceB(PhpStorm 的实例),然后返回到ServiceA .需要说明的是,我将打开两个 PhpStorm 窗口:一个用于ServiceA,一个用于ServiceB。
以下是我当前配置的一些注意事项:
- ServiceA:PHP 7.4.x,Xdebug 3.0.4
- ServiceB:PHP 7.2.x、Xdebug 3.0.4
ServiceA 和 ServiceB 的 Xdebug 设置相同:
zend_extension=xdebug.so
xdebug.mode=debug
xdebug.discover_client_host=true
根据 PhpStorm 中的 File | Settings | PHP | Debug 配置,它们如下所示,对于 ServiceA 和 ServiceB 相同:
因为ServiceB 应该是监听传入连接,所以这个绿色的小虫子工具栏是这样的:
我遇到了什么问题?
- 我可以在
ServiceA中启动调试会话,但它永远不会切换到ServiceB,但会话正确完成。 - 以下“警告”垃圾邮件我的
stdout日志ServiceB:
Xdebug:[Step Debug] 无法连接到调试客户端。已尝试:172.18.0.9:9003(来自 REMOTE_ADDR HTTP 标头),localhost:9003(通过 xdebug.client_host/xdebug.client_port 回退)
我可能在这里遗漏了什么?
注意:如果需要更多信息,请询问我,我会添加它
【问题讨论】:
-
"xdebug.discover_client_host=true" 这很可能不会做你想做的事。它使用 HTTP 标头找出 HTTP 请求来自的 IP 地址,并使 Xdebug(尝试)连接到该机器上的 IDE。我敢打赌
172.18.0.9:9003没有你的 IDE 监听它。
标签: php docker phpstorm xdebug xdebug-3