Docker 容器和 docker 主机 xdebug 冲突
Docker container and docker host xdebug conflict
我有一个 PHP-FPM docker 容器 (php 7.2),其服务在内部公开 REST API 并且在容器中安装了 xdebug 2.6。这是 xdebug 配置:
zend_extension=/usr/local/lib/php/extensions/no-debug-non-zts-20170718/xdebug.so
xdebug.remote_enable=1
xdebug.remote_connect_back=0
xdebug.remote_autostart=0
xdebug.remote_handler=dbgp
xdebug.remote_mode=req
xdebug.remote_port=9000
xdebug.idekey=PHPSTORM
xdebug.remote_host=hostmachine
现在我还在 docker 主机上安装了 xdebug,那是我的桌面。我正在尝试在 docker 主机上调试 API 客户端。客户端连接到公开 API 的容器。从 API 客户端向容器发送请求后,一切都挂起。
在下面的代码示例中,如果我的 IDE 正在侦听传入的调试器连接(未选择调试配置),则永远不会执行分配 $test=1
,进入 $response = $this->httpClient->get('info')
后一切都会挂起($httpClient
是 guzzle http 6.3 顺便说一句):
public function getInfo(): InfoInterface
{
$response = $this->httpClient->get('info');
$test = 1;
}
我在想容器中的 xdebug 正在尝试连接到我的 IDE,这就是挂起的原因。但是我如何在没有容器的 xdebug 干扰的情况下调试我的 API 客户端呢?
我应该为来自 docker 容器的连接使用不同的端口 and/or 增加 IDE 中的最大调试连接数,正如前两条评论中所建议的那样原题。
我有一个 PHP-FPM docker 容器 (php 7.2),其服务在内部公开 REST API 并且在容器中安装了 xdebug 2.6。这是 xdebug 配置:
zend_extension=/usr/local/lib/php/extensions/no-debug-non-zts-20170718/xdebug.so
xdebug.remote_enable=1
xdebug.remote_connect_back=0
xdebug.remote_autostart=0
xdebug.remote_handler=dbgp
xdebug.remote_mode=req
xdebug.remote_port=9000
xdebug.idekey=PHPSTORM
xdebug.remote_host=hostmachine
现在我还在 docker 主机上安装了 xdebug,那是我的桌面。我正在尝试在 docker 主机上调试 API 客户端。客户端连接到公开 API 的容器。从 API 客户端向容器发送请求后,一切都挂起。
在下面的代码示例中,如果我的 IDE 正在侦听传入的调试器连接(未选择调试配置),则永远不会执行分配 $test=1
,进入 $response = $this->httpClient->get('info')
后一切都会挂起($httpClient
是 guzzle http 6.3 顺便说一句):
public function getInfo(): InfoInterface
{
$response = $this->httpClient->get('info');
$test = 1;
}
我在想容器中的 xdebug 正在尝试连接到我的 IDE,这就是挂起的原因。但是我如何在没有容器的 xdebug 干扰的情况下调试我的 API 客户端呢?
我应该为来自 docker 容器的连接使用不同的端口 and/or 增加 IDE 中的最大调试连接数,正如前两条评论中所建议的那样原题。