无USB连接时iPhone访问Windows10台式机本地8080端口服务失败排查
同局域网下iPhone无法访问PHP本地开发服务的排查方案
首要排查点:PHP内置服务器的绑定配置
你当前使用的启动命令存在关键参数缺失:
现有启动命令:
php -S localhost:8080 -t D:\Code\Projects\Website
当启动参数中指定localhost作为绑定地址时,PHP内置开发服务器只会把服务绑定在本机回环地址127.0.0.1上,简单来说就是只有这台台式机自己能访问服务,服务进程根本没有监听以太网网卡对应的局域网地址,即便防火墙规则完全放通、设备在同一网络,其他设备发来的请求也触达不到PHP服务。
修正后的启动命令
需要把绑定地址调整为监听所有网络接口,正确的启动方式为:php -S 0.0.0.0:8080 -t D:\Code\Projects\Website
其中0.0.0.0参数的作用是接收本机所有网络接口的入站请求,此时同局域网设备的访问请求才能被PHP服务正常接收。
其他需要逐项核对的配置项
如果调整启动命令后仍然无法访问,按以下顺序排查遗漏的配置:
- 确认台式机的物理以太网IPv4地址:在台式机的命令行执行
ipconfig,找到真实物理以太网适配器对应的IPv4地址(注意区分VMware、VirtualBox、WSL生成的虚拟网卡地址,你的网关为10.0.0.1,物理网卡的IP应当属于10.0.0.x网段,和iPhone的IP处于同一网段) - 检查NETGEAR路由器的设备隔离规则:不少NETGEAR路由器默认开启“无线-有线隔离”“AP隔离”功能,这类设置会让同一路由下的WiFi设备和有线设备默认无法互访,这一层的网络隔离不受台式机防火墙设置影响,需要在NETGEAR Genie的无线设置页面关闭对应的隔离开关
- 核对Windows防火墙规则的匹配生效状态:确认当前台式机的以太网连接被系统归类为“专用网络”,部分场景下即便入站规则勾选了所有网络配置文件,网络类型识别偏差也会导致规则不触发。可以临时关闭10秒防火墙做连通性测试,如果关闭后可以正常访问,重新针对当前网络类型放通8080端口的TCP入站流量即可
iOS端的相关说明
iOS本身没有针对局域网HTTP访问的强制安全限制,网络连通的前提下即可正常访问本地服务,需要留意两个容易忽略的细节:
- 访问地址必须手动加上
http://协议头,不要直接输入IP和端口,否则iOS会默认尝试发起HTTPS请求,直接导致连接失败 - 临时关闭iPhone上的VPN、全局代理类工具,这类工具会把局域网直连请求转发到外网,导致无法正常访问台式机的本地服务
内容的提问来源于stack exchange,提问作者xLnRd
相关产品推荐
相关产品推荐

