首页 文章

打开XDebug的Windows防火墙

提问于
浏览
11

这似乎应该超出简单,所以我讨厌问 . 但我尝试配置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 回答

  • 0

    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/

  • 8

    我找到的最简单的方法:Windows高级防火墙(您添加/删除规则的地方) - >右键单击 - >属性(用于启用/禁用本地/域/公共防火墙的另一个位置)

    三个范围(本地/域/公共)中的每一个都具有完全排除特定网络接口的设置(!)

    为任何vmware / virtualbox网络接口打开Windows防火墙 . (除非你针对你的虚拟机要求它)

    这将允许从您的guest虚拟机到主机的任何连接 .

  • 1

    通常,在协议或端口范围方面不更容易指定规则 . 相反,只是让程序可执行文件的所有内容都有防火墙例外 . 因此,不要为端口9000创建规则,只需为“xdebug.exe”创建规则,但不要将其限制为仅限端口9000 .

    控制面板 - > Windows防火墙 - >单击“通过Windows防火墙允许应用程序或功能”,然后添加xdebug.exe(或任何可执行文件名) . 这将添加一组新的入站规则(一个用于UDP,另一个用于TCP) . 返回高级设置页面,找到已创建的新入站规则,并检查每个以确认已设置“范围”复选框(私有,域,公共) .

    有一种方法可以打开防火墙日志记录,这样您就可以发现防火墙打开时阻塞的内容 . 然后,您可以根据需要添加规则 .

    http://technet.microsoft.com/en-us/library/cc787462(v=ws.10).aspx

  • 0

    如果您的盒子上除了虚拟适配器之外还有NAT适配器,则可以将php.ini xdebug.remote_host 参数中的xdebug配置更改为计算机上物理接口的IP . 最简单的方法是尝试telnet到9000端口 .

相关问题