这似乎应该超越简单,所以我讨厌问。但我尝试配置Windows防火墙以允许XDebug在端口9000上连接到PHPStorm而没有成功。
XDebug在Vagrant Box上有私有网络连接 - 所以主机有一个虚拟网络适配器。 Vagrant是192.168.33.10,主机PC是192.168.33.1。
禁用Windows防火墙后,XDebug将连接到PHPStorm。但我显然不想让我的防火墙关闭。
所以我尝试使用以下入站规则设置在Windows防火墙中打开一个端口:
但它不能让XDebug连接到PHP风暴。我也尝试将协议设置为UDP。而且我知道如果这个规则确实有效,那就太过开放了(我可以收紧范围),但目前我只想在收紧它之前看到它有效。
答案 0 :(得分:8)
Virtualbox网络主机专用接口存在问题,因为它是环回接口,Windows以不同的方式管理它。
解决这个问题的简单方法是打开'regedit'。搜索'HKLM:\ system \ CurrentControlSet \ control \ class {4D36E972-E325-11CE-BFC1-08002BE10318}'。有很多接口。简单地看一个名为'VirtualBox Host-Only Ethernet Adapter'。然后添加名为'* NdisDeviceType'的新DWORD(32)键和值'1'(十六进制)。重新启动。
我不知道是否需要添加标准的fw规则,例如主机端口9000允许所有,因为我已经拥有它。
答案 1 :(得分:2)
我找到的最简单的方法:Windows高级防火墙(添加/删除规则的地方) - >右键单击 - >属性(en /禁用本地/域/公共防火墙的另一个地方)
三个范围(本地/域/公共)中的每一个都有一个设置,可以完全排除特定网络接口的防火墙处理(!)
为任何vmware / virtualbox网络接口关闭Windows防火墙。 (除非您针对虚拟机要求它)
这将允许您的访客与主机之间的任何连接。
答案 2 :(得分:0)
通常,在协议或端口范围方面不更容易指定规则。相反,只是让程序可执行文件的所有内容都有防火墙例外。因此,不要为端口9000创建规则,只需为“xdebug.exe”创建规则,但不要将其限制为仅限端口9000。
控制面板 - > Windows防火墙 - >单击“通过Windows防火墙允许应用程序或功能”,然后添加xdebug.exe(或任何可执行文件名称)。这将添加一组新的入站规则(一个用于UDP,另一个用于TCP)。返回高级设置页面,找到已创建的新入站规则,并检查每个入站规则以验证是否设置了“范围”复选框(私有,域,公共)。
有一种方法可以启用防火墙日志记录,以便您可以发现防火墙打开时阻止的内容。然后,您可以根据需要添加规则。
http://technet.microsoft.com/en-us/library/cc787462(v=ws.10).aspx
答案 3 :(得分:0)
如果您的盒子上除了虚拟适配器之外还有NAT适配器,则可以将php.ini xdebug.remote_host
参数中的xdebug config更改为计算机上物理接口的IP。最简单的方法是尝试telnet到9000端口。