Phpstorm Xdebug 不能与 ddev 一起工作

Phpstorm Xdebug not working with ddev

我正在使用 DDEV 进行 drupal8 开发。我在 win10pro 和 ubuntu18.04 上有相同的项目。在 win10 上我可以在 Phpstorm 中调试,在 ubuntu 上它失败了。我已经花了几个小时搜索。

在项目的 .ddev 文件夹中,我确实将 "xdebug_enabled" 参数设置为 true。在 ubuntu 的版本上,我创建了额外的配置,以便从 Xdebug 接收日志。当 ssh 进入网络服务器容器时,我在 /var/log/xdebug.log 检查 xdebug 日志,它显示如下内容:

I: 连接到已配置的 address/port: host.docker.internal:9000
E:连接到客户端超时(等待:200 毫秒)。 :-(

从容器内我可以 ping host.docker.internal,host.docker.internal 的 IP 解析为 172.17.0.1

当我在 ubuntu 上检查来自 phpstorm 的日志时,它显示: 2018-08-16 13:47:39,141 [2778275] 调试 - il.connection.ServerConnection - 在端口 9000

上启动 'Xdebug Server'

似乎没有什么可以解决问题。我已经从 win10 中导出了我的 phpstorm-settings(调试确实有效)并在 ubuntu 上将它们导入到 phpstorm 中,但它仍然失败。

在 phpstorm 中,我没有收到任何显示 "new incoming connection from xdebug" Xdebug 过去确实有效的弹出窗口,但在使用 ddev 时从未出现过。 在 ddev 中,它使用 2.6.0,phpinfo() 的 xdebug 部分在 ubuntu 和 win10 上显示相同的输出。 xdebug installed xdebug settings

帮助非常感谢。 格尔特

这不是 DDEV 问题,确实是防火墙导致了问题。 我为 ufw 创建了一个规则:

 sudo ufw allow in on docker0 from 172.17.0.0/24 to 172.17.0.1/32 port 9000 comment xdebug

和 iptables 的规则:

sudo iptables -I INPUT -p tcp -m tcp --dport 9000 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 9000 -j ACCEPT
您还需要确保在启动时加载规则。

@rfay,谢谢指点。