我已经为 PhpStorm 设置了调试配置,它已被 PhpStorm 成功验证:
还安装了 Chrome 的 Xdebug 助手。
问题是当我开始监听调试连接并在打开 Xdebug 帮助程序的情况下重新加载所需的页面时没有任何 react 。也试过这个bookmarklets没有运气。
没有错误什么的,什么都没有。
还尝试将不同的 IP 设置为 dockerhost:从 192.168.. 范围(来自网络设置),从 172.* 范围(来自 nginx),从 10.* 范围(默认为 10.0.75.1
)。也试过docker.for.mac.internal.host
容器启动时失败。
Docker 17.02、macOS Sierra、PhpStorm 2017.3
最佳答案
如果您使用的是 linux,请务必在防火墙中创建相应的规则。
但要更有效地解决此问题,您需要收集更多信息。
xdebug.remote_log=/var/www/xdebug.log
在你xdebug.ini 或者您可以将其附加到 PHPStorm 的“Cli Interpreters > Configuration Options”中 (xdebug.remote_log,/path/inside/workspace/container/xdebug.log)
sudo tcpdump -i any port 9000
现在运行一次调试器,检查容器内的日志(默认为工作区),看看是否有任何来自容器的传入连接尝试。
如果您看到类似
Time-out connecting to client (Waited: 200 ms). :-(
的内容,您的防火墙可能会阻止传入连接。要打开它们,您可以使用 ufw 添加规则
sudo ufw allow in from 172.22.0.0/24 to any port 9000
(或写下一个特定的 ip)一定要仔细检查这是试图连接的 ip这将允许来自 172.22.0.* 的端口 9000 上的所有连接(这是 laradock 用于其虚拟网络的内容)。请务必仔细检查日志,可能您的设置使用不同的 IP 范围)
我的工作 xdebug.ini (在 php-fpm 和工作区容器中都是相同的)
xdebug.remote_host=dockerhost
xdebug.remote_connect_back=0
xdebug.remote_port=9000
xdebug.idekey=PHPSTORM
xdebug.remote_autostart=1
xdebug.remote_enable=1
xdebug.remote_log=/var/www/xdebug.log
xdebug.cli_color=1
xdebug.profiler_enable=0
xdebug.profiler_output_dir="~/path/to/profiler.log"
xdebug.remote_handler=dbgp
xdebug.remote_mode=req
xdebug.var_display_max_children=-1
xdebug.var_display_max_data=-1
xdebug.var_display_max_depth=-1
如果上述方法都不起作用,另一个步骤是检查您是否已经在端口 9000 上运行了任何容器。如果是这样,那么您将需要使用另一个端口,只是不要忘记从 docker 中公开它。
(说明:docker 将端口绑定(bind)(公开)到主机,以便任何传入连接都定向到正确的容器,如果采用 9000,xdebug 将无法连接到您机器上的任何 IDE,即使 IDE 说它正在运行监听器)
希望这可以帮助。
关于debugging - Laradock + PhpStorm + Xdebug 失败,而 PhpStorm 验证成功,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49446088/