主机是Windows。在虚拟机-Ubuntu中,Docker容器中有一个PHP项目,适配器是Bridge,从主机通过IP 192.168.0.104访问。在虚拟机项目中映射到 IP 172.16.100.1(端口 10443)。我已经在主机系统中使用 JetBrains Gateway 打开了这个项目,并将 PhpStorm 安装到了虚拟机中。 PhpStorm 中的设置:
文件xdebug.ini:
[xdebug]
zend_extension=xdebug.so
xdebug.remote_enable=1
xdebug.remote_autostart=1
xdebug.mode=coverage,debug
xdebug.start_with_request=yes
xdebug.remote_port=9003
xdebug.client_port=9000
xdebug.remote_host=172.16.100.1
xdebug.client_host=localhost
xdebug.discover_client_host=1
xdebug.remote_connect_back = 0
; xdebug.remote_log=/tmp/xdebug.log
; xdebug.log=/tmp/xdebug.log
稍后相同的文件:
[xdebug]
zend_extension=xdebug.so
xdebug.mode=coverage,debug
xdebug.client_host=172.16.100.1
xdebug.client_port=9003
根据9003端口分析的结果,我猜测该端口已被监听(在VM中调用):
$ sudo lsof -i -P -n | grep 9003
ld-linux- 12243 pavel 296u IPv6 262575 0t0 TCP *:9003 (LISTEN)
我已经打开Xdebug并在index.php的开头设置了一个断点。在 PowerShell 中创建 ssh 隧道:
ssh -R 9000:localhost:9003 [email protected]
md.mydomain.local
已在 C:\Windows\System32\drivers\etc\hosts
中链接到 IP 192.168.0.104
。
在浏览器中导航
md.mydomain.local:10443
- 远程 PhpStorm 既不停止,也不产生类似“...而不暂停”的消息
通过此设置,您不需要 SSH 隧道。
我们也可以忽略它全部运行在Windows中的事实,因为PhpStorm通过远程开发运行在VM中;因此,从 Xdebug 的角度来看,我们有一台运行 Docker 容器的 Linux 机器,其中有一个 Web 服务器。
现在,您需要找到容器可以使用哪个主机名连接到虚拟机(而不是像您想要的那样连接到 Windows 主机),并使用该主机名作为
xdebug.client_host
。通常,host.docker.internal
可以正常工作。
此外,请确保禁用
Ignore external connections through unregistered server configurations
,直到您在 PhpStorm 中实际获得调试会话 - 100% PHP |您手动创建的服务器条目是错误的,因此所有传入会话都将被忽略