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