【发布时间】:2016-09-25 11:49:42
【问题描述】:
我对使用 Xdebug、Docker for Windows 和 PhpStorm 有点困惑...
我在一个带有 PHP 的容器中配置了 Xdebug。这是此容器中我的 php.ini 中出现的内容:
xdebug.remote_enable=on
xdebug.remote_autostart=off
xdebug.idekey=PHPSTORM
xdebug.remote_port=9000
xdebug.remote_host=10.0.75.1
# xdebug.remote_connect_back=1
docker 看到的我的 Windows IP 似乎是 10.0.75.1(从 Windows 访问时,$_SERVER['REMOTE_ADDR'] 的 PHP 显示 10.0.75.1)。也是 DockerNAT 虚拟设备 IP。
PHPStorm(在 Windows 上)正在侦听端口 9000 上的 Xdebug。 我已经为这个容器绑定了 9000 到 9000 端口:
web:
build: php5
ports:
- "80:80"
- "9000:9000"
Windows 防火墙已关闭。尽管如此,PHPStorm 并没有从这个容器中获得任何传入连接。
因此我尝试从不同的地方远程登录:
当我从 Windows telnet 10.0.75.1 9000 时,它在 PHPStorm 正在侦听时连接成功,并在未侦听时返回此错误:“无法在端口 9000 上打开与主机的连接:连接失败”。这很有意义。
当我从本地网络上的另一台计算机尝试时,同样的事情,telnet 192.168.1.4 9000 工作正常。
但是从我的 Docker 的 web 容器中,即使我可以成功地 ping 10.0.75.1 并在端口 80 上远程登录这个 IP(它连接),在端口 9000 上,无论 PHPStorm 是否正在侦听,它都会返回一个错误:
root@fd60276df273:/var/www/html# telnet 10.0.75.1 9000
Trying 10.0.75.1...
telnet: Unable to connect to remote host: Connection timed out
我尝试将 Xdebug 端口更改为其他随机数字,但它并没有改变任何东西...
您知道导致此问题的原因吗?
【问题讨论】:
-
您是否看过类似的问题:stackoverflow.com/questions/32668258/… .. 或在 SO 上搜索
[phpstorm] docker xdebug? -
是的,但我让它与 docker 机器一起工作。使用 docker for windows (beta) 的设置有所不同,它更本机地运行 - 没有虚拟框。
-
我明白了。感谢您的澄清。