我在Windows上,使用WSL。我正在尝试直接从WSL运行Phpstorm,涉及GWSL。这是为了避免WSL和Windows之间的文件系统同步。除了XDebug,一切都很好,听host.docker.internal不起作用。我使用的是Shopware6开发人员模板,它为网络应用程序创建了一个容器,并启用了XDebug。
我看到了一个使用socat将xdebug套接字映射到phpstorm侦听端口的解决方案。你能帮我做吗?
在wsl上使用docker时,您的网络至少包含3个主机:Windows -> WSL-Linux -> Docker-Linux
。主机名host.docker.internal
在Windows上默认指向,但如果使用GWSL,则从WSL Linux运行IDE。所以它是一个不同的主机,主机名host.docker.internal
无法访问它。
我建议做下一步:
- 获取Ip地址WSL Linux。运行
hostname -I
- 检查Docker Linux和IDE之间的连接。
- 打开IDE上的端口侦听
- 转到docker容器。在WSL Linux终端
docker exec -it [your container name] sh
中运行 - 在那里,运行
telnet [wsl-linux ip from step1] 9000
。如果您将看到Connected to [your ip]
,那么它正在工作,您可以进入下一步
- 更新容器中
xdebug.ini
文件中的设置xdebug.remote_host
- 转到docker容器。在WSL Linux终端
docker exec -it [your container name] sh
中运行 - 在
xdebug.ini
中设置xdebug.remote_host=[wsl-linux ip from step1]
(可能您会在此处找到/usr/local/etc/php/conf.d/xdebug.ini
( - 重新启动docker容器
docker restart [your container name]
- 转到docker容器。在WSL Linux终端