为什么XDebug在不同的网络上无法连接?

问题描述 投票:0回答:2

我知道互联网上有很多关于这个主题的文章,但是我已经调试了两天了,而且我似乎没有任何进一步的了解。

设置我的工作笔记本电脑上有一个(很旧的)无业游民的盒子,大部分是以前的大学同事设置的。一切似乎仍然对我和我的同事们都有效,因此我们没有任何理由建立一个全新的团队。

[Vagrant]框包含一个我们用于开发网站的Centos安装。

主机是Windows 10。

问题在办公室中(通过电缆)连接到物理网络时,我可以使用XDebug而不出现任何问题。我从Firefox浏览器插件启用了XDebug,并在Centos上启用了XDebug,然后在Windows上连接到PHPStorm,因此可以逐步执行代码。

但是,在家里,在WIFI上(我没有电缆),XDebug不能正常工作。

Vagrant计算机上的XDebug日志当前指出以下内容:

I: Checking remote connect back address.
I: Checking header 'HTTP_X_FORWARDED_FOR'.
I: Checking header 'REMOTE_ADDR'.
I: Remote address found, connecting to 10.10.10.1:9000.
E: Time-out connecting to client. :-(

研究我在许多帖子中读到,Vagrant的主机地址应类似于10.0.2.2。就我的情况而言,它一直是10.10.10.1。

我还从“ Vagrant”框中看到,您应该使用netstat检查主机IP。主机IP将是默认网关。

[在家(使用WIFI时),我对此进行了测试,输出为:

netstat -rn
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
0.0.0.0         192.168.220.2   0.0.0.0         UG        0 0          0 ens32
10.10.10.0      0.0.0.0         255.255.255.0   U         0 0          0 ens33
169.254.0.0     0.0.0.0         255.255.0.0     U         0 0          0 ens33
169.254.0.0     0.0.0.0         255.255.0.0     U         0 0          0 ens34
192.168.56.0    0.0.0.0         255.255.255.0   U         0 0          0 ens34
192.168.220.0   0.0.0.0         255.255.255.0   U         0 0          0 ens32

这里的默认网关是“ 192.168.220.2”。因此,我尝试通过手动将XDebug的remote_host设置为192.168.220.2并禁用remote_connect_back

来为xdebug设置该IP

现在日志说:

I: Connecting to configured address/port: 192.168.220.2:9000.
W: Creating socket for '192.168.220.2:9000', poll success, but error: Operation now in progress (29).
E: Could not connect to client. :-(
Log closed at 2020-01-26 08:19:34

[从其他文章中我了解到,这实际上更糟,并且IP地址是错误的,因为它应该是内部IP地址,如10.10.10.1

编辑1:我今天在办公室中连接到物理网络的地方对此进行了测试。 XDebug可以按预期工作,但是netstat的输出对于网关是相同的,因此这可能与它无关:

Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
0.0.0.0         192.168.220.2   0.0.0.0         UG        0 0          0 ens32
10.10.10.0      0.0.0.0         255.255.255.0   U         0 0          0 ens33
169.254.0.0     0.0.0.0         255.255.0.0     U         0 0          0 ens33
169.254.0.0     0.0.0.0         255.255.0.0     U         0 0          0 ens34
172.24.1.0      0.0.0.0         255.255.255.0   U         0 0          0 ens34
192.168.220.0   0.0.0.0         255.255.255.0   U         0 0          0 ens32

Edit 2:现在,在办公室里,我还通过WIFI(通过断开物理网络电缆)测试了XDebug,然后XDebug不再起作用。因此,问题似乎并不特定于我的家庭网络,而在于物理网络与WIFI。

PHPStorm说我很好PHPStorm在设置中具有此xdebug验证屏幕。尝试通过绿色检查通过所有内容。显然验证不够充分?

有趣的注意事项同时,我也试图将Windows的Samba共享安装到我的Vagrant盒子中。我想尝试该设置,但就像XDebug一样,mount命令无法到达主机。

编辑:我今天在物理网络上的办公室中对此进行了测试,但这也无法正常工作。因此,我们现在可能会忘记这一点,因为这似乎是一个完全不同的问题。

windows vagrant virtualbox xdebug
2个回答
1
投票

以下短语似乎表明已建立连接。

W: Creating socket for '192.168.220.2:9000', poll success, but error: Operation now in progress (29).

您确定是PhpStorm在本地侦听端口9000吗?而且您的“无家可归”盒子可以与之交谈吗?

让我们找出第一个:在您的[[host(在两种情况下都运行Windows的情况下)的shell中,运行:

C:\> netstat -a -b
并确保在端口9000上的

监听

PhpStorm进程。如果是其他端口,请将PhpStorm配置中的端口更改为其他端口(例如9003),然后将该端口设置为xdebug.remote_portphp.ini设置的值。在PhpStorm中关闭“侦听调试连接”,然后再次将其重新打开。第二,测试“ Vagrant”盒是否可以与该端口通信

0
投票
[在一个学院的帮助下,我发现问题是Centos中有办公室专用的IP路由。

使用WIFI时,必须更改/删除这些路由。显然,我们有一个脚本必须运行才能做到这一点。

我不太了解它,但是据我所知,它通过以下方式修改了IP路由:sudo /usr/sbin/ip route

通过这样做,一切将再次按预期工作。

© www.soinside.com 2019 - 2024. All rights reserved.