Jos*_*son 5 php debugging xdebug docker
过去 6 个月,我一直在 MAC 上使用 XDebug 和 PHP 版本 7.0.*,使用远程调试到 Docker 容器。
我正在运行一个旧版本的 docker,它使用 VirtualBox 到 VM for docker,一切正常。
我最近将 docker 更新到了 17.03.1 版,但除了 xDebug 问题之外什么都没有。我已经通过他的存储库中的问题联系了 vscode-php-debug 的创建者,然后他指示我用 xdebug 或 docker 来解决这个问题。
我的问题如下:
XDebug 正在运行并在我的容器上工作,xdebug 日志显示它连接到我的 IDE,但是当我在 VSCode 中设置断点时,它只是关闭连接,就好像没有断点一样。
我在 vscode-php-debug 上发布的问题可以在这里找到
其中有我的 xDebug 日志和 VSCode 调试日志的副本......它表明连接已建立但没有断点被击中。
我已经阅读了一些博客,docker 现在需要为连接到 xdebug 的连接创建一个环回 ip,我也尝试过但失败了。
在使用了这么久之后,我发现在没有调试器的情况下进行调试非常困难。
我尝试了许多配置,重新安装、重新启动、重建图像/容器,甚至在 freenode 上尝试了 docker 和 xdebug irc 频道,但没有任何成功。
EDIT-2 2018
remote_host现在可以更改该值以支持所有平台:
xdebug.remote_host = "host.docker.internal"
Run Code Online (Sandbox Code Playgroud)
EDIT-1 2018 不再需要使用 plist 修复程序。正如本要点中所指出的:https : //gist.github.com/chadrien/c90927ec2d160ffea9c4#gistcomment-2398281您现在可以使用 docker for mac 内部 IP。
[xdebug]
xdebug.remote_host = "docker.for.mac.host.internal"
xdebug.default_enable = 1
xdebug.remote_autostart = 1
xdebug.remote_connect_back = 0
xdebug.remote_enable = 1
xdebug.remote_handler = "dbgp"
xdebug.remote_port = 9000
xdebug.idekey="PHPSTORM"
Run Code Online (Sandbox Code Playgroud)
旧配置
由于您在 Mac 上使用 docker,因此我发布了我的解决方案的工作方式。大部分功劳都归于 docker 论坛上的这篇文章。
假设您的 xdebug 安装正确,这是我在php.ini.
[xdebug]
xdebug.remote_host=10.254.254.254
xdebug.remote_autostart=1
xdebug.idekey = PHPSTORM
xdebug.default_enable = 0
xdebug.remote_enable = 1
xdebug.remote_connect_back = 0
xdebug.profiler_enable = 1
Run Code Online (Sandbox Code Playgroud)
您可以通过在终端中执行此命令来测试您的配置。sudo ifconfig en0 alias 10.254.254.254 255.255.255.0.
如果这有效,您可以将其转换为plist文件并将其放置在以下位置。/Library/LaunchDaemons/com.docker.xdebugFix.plist. 您将在下面找到我的 plist 文件版本。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.docker.xdebugFix</string>
<key>ProgramArguments</key>
<array>
<string>ifconfig</string>
<string>en0</string>
<string>alias</string>
<string>10.254.254.254</string>
<string>255.255.255.0</string>
</array>
<key>RunAtLoad</key>
<true/>
</dict>
</plist>
Run Code Online (Sandbox Code Playgroud)
注意:plist 仅在您的 Mac 重新启动后才能工作。
PHPSTORM 配置(2018 年编辑后也需要)
在那之后,我的断点在哪里工作,如果你使用 chrome,你还需要使用 xdebug 扩展,但我很确定你知道这一点,因为你过去使用过它。