Debugging 拉拉多克+;PhpStorm&x2B;Xdebug失败,而phpsform验证成功
我已为PhpStorm设置调试配置,并已通过PhpStorm成功验证: 还安装了用于Chrome的Xdebug helper 问题是,当我开始监听调试连接并在打开Xdebug helper的情况下重新加载所需页面时,什么也没有发生。我也试过了,但运气不好 没有错误什么的,什么都没有 还尝试将不同的IP设置为dockerhost:from 192.168。。范围(从网络设置)、从172.*范围(从nginx)、从10.*范围(Debugging 拉拉多克+;PhpStorm&x2B;Xdebug失败,而phpsform验证成功,debugging,docker,networking,phpstorm,xdebug,Debugging,Docker,Networking,Phpstorm,Xdebug,我已为PhpStorm设置调试配置,并已通过PhpStorm成功验证: 还安装了用于Chrome的Xdebug helper 问题是,当我开始监听调试连接并在打开Xdebug helper的情况下重新加载所需页面时,什么也没有发生。我也试过了,但运气不好 没有错误什么的,什么都没有 还尝试将不同的IP设置为dockerhost:from 192.168。。范围(从网络设置)、从172.*范围(从nginx)、从10.*范围(10.0.75.1为默认值)。还尝试了docker.for.mac.i
10.0.75.1
为默认值)。还尝试了docker.for.mac.internal.host,当容器启动时失败
Docker 17.02,macOS Sierra,PhpStorm 2017.3如果您使用的是linux,请确保在防火墙中创建相应的规则
但是为了更有效地解决这个问题,你需要收集更多的信息
在您的系统中启用xdebug日志xdebug.remote\u log=/var/www/xdebug.log
或者您可以将其附加到PHPStorm(xdebug.remote_log,/path/inside/workspace/container/xdebug.log)中的“Cli解释器>配置选项”中
您可以采取的另一个步骤是监视机器的传入连接。(在安装docker的位置运行此操作)。它将开始侦听端口9000上的所有传入连接尝试
sudo tcpdump-i任何端口9000
现在运行一次调试器,检查容器内的日志(默认情况下为工作区),并查看是否有来自容器的任何传入连接尝试
如果您看到连接到客户端时超时(等待:200毫秒):-(
),您的防火墙可能正在阻止传入的连接
要打开它们,可以使用ufw添加规则
sudo ufw允许从172.22.0.0/24进入任何端口9000
(或写下一个特定的ip)。请确保再次检查这是尝试连接的ip
这将允许从172.22.0.*端口9000上的所有连接(这是laradock用于其虚拟网络的部分)。请确保仔细检查日志,可能您的安装程序使用不同的ip范围)
我的工作xdebug.ini(在php fpm和workspace容器中都是相同的)
如果上述任何一项都不起作用,另一个步骤是检查您是否已经有任何集装箱在9000端口上运行。如果是这样,那么您需要使用另一个端口,只是不要忘记从docker公开它
(说明:docker将端口绑定(公开)到主机,以便将任何传入连接定向到正确的容器。如果使用9000,xdebug将无法连接到您机器上的任何IDE,即使IDE说它正在运行侦听器)
希望这有帮助。如果您使用的是linux,请确保在防火墙中创建相应的规则 但是为了更有效地解决这个问题,你需要收集更多的信息
xdebug.remote\u log=/var/www/xdebug.log
或者您可以将其附加到PHPStorm(xdebug.remote_log,/path/inside/workspace/container/xdebug.log)中的“Cli解释器>配置选项”中sudo tcpdump-i任何端口9000
现在运行一次调试器,检查容器内的日志(默认情况下为工作区),并查看是否有来自容器的任何传入连接尝试
如果您看到连接到客户端时超时(等待:200毫秒):-(),您的防火墙可能正在阻止传入的连接
要打开它们,可以使用ufw添加规则
sudo ufw允许从172.22.0.0/24进入任何端口9000
(或写下一个特定的ip)。请确保再次检查这是尝试连接的ip
这将允许从172.22.0.*端口9000上的所有连接(这是laradock用于其虚拟网络的部分)。请确保仔细检查日志,可能您的安装程序使用不同的ip范围)
我的工作xdebug.ini(在php fpm和workspace容器中都是相同的)
如果上述任何一项都不起作用,另一个步骤是检查您是否已经有任何集装箱在9000端口上运行。如果是这样,那么您需要使用另一个端口,只是不要忘记从docker公开它
(说明:docker将端口绑定(公开)到主机,以便将任何传入连接定向到正确的容器。如果使用9000,xdebug将无法连接到您机器上的任何IDE,即使IDE说它正在运行侦听器)
希望这能有所帮助。“PhpStorm”成功验证了它。PhpStorm jut检查php.ini中的值是否有意义,以及端口号是否与IDE中的端口号匹配。它不会检查实际连接(如果Xdebug能够连接或不连接)。1)确保IDE正在侦听Xdebug conn(活动的“电话手柄”图标)2)确保是PhpStorm侦听该端口,而不是其他应用程序(例如php fpm)--sudo lsof-nP-iTCP-sTCP:LISTEN
3)收集xdebug日志--它将告诉它尝试连接的位置和响应。但一般来说:xdebug.remote_主机必须指向运行PhpStorm的IP(从容器内部看;docker.for.mac.internal.host
也可以工作——我不是mac用户,所以不能肯定)。4) 您需要禁用connect\u back
,因为在这种情况下,remote\u host
被忽略。RTM.1)是;2) phpstorm 74846 376u IPv4 0x82e89367ea55f7d 0t0 TCP*:9000(侦听);3) 跳过;4) remote\u connect\u back
-就是这样!谢谢禁用后,我设法连接!从来没有想过这会引起问题。默认情况下,它在l中启用
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