英文:
PhpStorm inserts wrong client_host IP when trying to run debug session
问题
PHP解释器运行在Docker容器中,Xdebug配置如下:
zend_extension=xdebug.so
[xdebug]
xdebug.mode=debug
xdebug.idekey=Docker
xdebug.discover_client_host=on
xdebug.client_host=host.docker.internal
xdebug.client_port=9011
xdebug.cli_color=1
当我在测试中运行调试会话时,PhpStorm运行以下执行字符串:
[docker-compose://[/home/Projects/service/docker-compose.yaml]:php/]:php -dxdebug.mode=debug -dxdebug.client_port=9011 -dxdebug.client_host=172.24.0.83 ...
请注意-dxdebug.client_host=172.24.0.83
部分... 但host.docker.internal
有另一个IP:
$ docker-compose exec php ping host.docker.internal
PING host.docker.internal (172.17.0.1): 56 data bytes
64 bytes from 172.17.0.1: seq=0 ttl=64 time=0.053 ms
当然,它无法启动调试会话。我在项目中和PhpStorm设置中没有找到任何关于这个奇怪的IP 172.24.0.83
的出现。我该如何摆脱PhpStorm中这显然无效的条件?
英文:
PHP interpreter runs in docker container, Xdebug configuration is
zend_extension=xdebug.so
[xdebug]
xdebug.mode=debug
xdebug.idekey=Docker
xdebug.discover_client_host=on
xdebug.client_host=host.docker.internal
xdebug.client_port=9011
xdebug.cli_color=1
When I run debugging session in tests, PhpStorm runs the execution string starting with
[docker-compose://[/home/Projects/service/docker-compose.yaml]:php/]:php -dxdebug.mode=debug -dxdebug.client_port=9011 -dxdebug.client_host=172.24.0.83 ...
Notice -dxdebug.client_host=172.24.0.83
part... But host.docker.internal
has another IP:
$ docker-compose exec php ping host.docker.internal
PING host.docker.internal (172.17.0.1): 56 data bytes
64 bytes from 172.17.0.1: seq=0 ttl=64 time=0.053 ms
And of course it failed to start debug session. I didn't find any occurrence of this strange IP 172.24.0.83
anywhere in the project nor in the PhpStorm setting. How can I get rid of this obviously non-working condition in PhpStorm?
答案1
得分: 1
问题解决了。有一些步骤可以解决像我这样的情况。
如@LazyOne所述,您可以在“设置/首选项 | PHP | 调试”中的“设置”部分中取消选中“通过命令行传递所需的配置选项(仍然需要手动启用调试扩展)”复选框,从而禁用自动传递Xdebug CLI配置选项。
如@Derick所述,最好使用您机器的实际IP地址(类似于192.168.1.200)作为“xdebug.client_host”。这也适用于非root的docker。
英文:
Problem solved. There is some steps to fix xdebug in cases like mine.
As @LazyOne mentioned, you can disable automatic passing of Xdebug CLI configuration option in Settings/Preferences | PHP | Debug
in a Settings
section by unchecking Pass required configuration options through command line (still need to enable debug extension manually)
checkbox.
As @Derick mentioned, it is better to use your actual IP address of the machine (smth like 192.168.1.200) for xdebug.client_host
. That is working for rootless docker also.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论