我一直在我的Drupal项目上使用ddev,现在想要使用xdebug,所以我使用PhpStorm进行步骤调试(或者实际上任何IDE都没问题)。但我似乎无法让它停在断点上。我试图遵循instructions in ddev docs,但这并没有让我离开,我不知道接下来该做什么。我做了:
xdebug_enabled: true
和ddev start
启用xdebug(并使用phpinfo检查xdebug是否已启用。)答案 0 :(得分:2)
[编辑2018-05-10以反映ddev v0.18.0中的XDebug设置的主要简化,编辑2018-06-16以反映Linux用户的解决方法进入v0.19.0] [编辑2018-09-15添加说明,以查明是否有其他东西正在侦听端口9000]
在任何设置中调试xdebug可能会有点麻烦,但以下是要采取的步骤:
ddev exec enable_xdebug
ddev ssh
进入网络容器。你可以ping host.docker.internal
(并获得回复)吗?如果你不能,你可能会有一个过度激进的防火墙。ddev ssh
:可以telnet host.docker.internal 9000
连接吗?如果是这样,你还有其他东西在端口9000上运行,可能是php-fpm。使用lsof -i :9000 -sTCP:LISTEN
找出有效内容并将其停止,或change the xdebug port and configure PHPStorm to use the new one。在telnet命令无法连接之前,请不要继续。ddev ssh
并再次尝试telnet host.docker.internal 9000
。它应该连接。如果没有,可能PHPStorm没有监听,或者没有配置为侦听端口9000? (请注意,之前的说明使用了不同的端口,如果您在v0.18.0之前使用过XDebug,则可能将PHPStorm设置为其他端口。)php -i
,或使用您想要的任何其他技术来提供phpinfo()
的输出,包括Drupal的admin / reports / status / php。您应该看到This program makes use of the Zend Scripting Language Engine...with Xdebug v2.6.0
和xdebug.remote_enable: On
。来自@heddn的说明:如果你想让xdebug只为fpm运行,例如phpenmod -s fpm xdebug
,而不是运行enable_xdebug
。
欢迎您的跟进!
答案 1 :(得分:0)
谢谢,遇到同样的问题并添加文件.ddev/docker-compose.xdebug.yaml
解决了问题。
但是,我在Mac / OSX上运行,发现这些额外的步骤可以从容器内部发现内部主机的IP地址:
1。)登录网络连接器ddev ssh
2。)运行ping docker.for.mac.localhost
3.。)在上面的yaml文件中设置host.docker.internal
的返回IP地址。
4.删除并启动DDEV。
另外值得一提的是PHPStorm中的validating xdebug对于检查配置非常有用。