打开XDebug的Windows防火墙

时间:2014-01-03 23:31:39

标签: windows xdebug firewall

这似乎应该超越简单,所以我讨厌问。但我尝试配置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地址:已选中
  • 高级
    • 配置文件
      • 域名:已检查
      • 私人:已检查
      • 公开:已检查
    • 接口类型
      • 所有界面类型:已选中
    • 边缘遍历:阻止边缘遍历

但它不能让XDebug连接到PHP风暴。我也尝试将协议设置为UDP。而且我知道如果这个规则确实有效,那就太过开放了(我可以收紧范围),但目前我只想在收紧它之前看到它有效。

4 个答案:

答案 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允许所有,因为我已经拥有它。

有关它的更多信息 - http://brianreiter.org/2010/09/18/fix-virtualbox-host-only-network-adapter-creates-a-virtual-public-network-connection-that-causes-windows-to-disable-services/

答案 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端口。