使用XAMPP发布PHP至公网遇问题,求免费本地测试方案
XAMPP Apache 公网访问问题的解决方案
一、排查核心配置遗漏点
- Apache监听范围:打开XAMPP控制面板→Apache→
Config→Apache (httpd.conf),找到Listen行,必须改为Listen 0.0.0.0:80(用8080就写8080),不能是仅绑定本地的Listen 127.0.0.1:80。 - 目录权限:在httpd.conf里找到
<Directory "你的网站根目录(比如htdocs)">块,把Require local替换为Require all granted,同时确保AllowOverride All和Options Indexes FollowSymLinks Includes ExecCGI已启用。 - 虚拟主机配置(如果启用):打开
Apache (httpd-vhosts.conf),虚拟主机块必须是<VirtualHost *:80>,而非特定本地IP,同时在块内添加Require all granted,ServerName可设为你的DuckDNS域名。
二、端口转发与防火墙验证
- 路由器端口转发
- 进入路由器后台(通常是192.168.1.1/192.168.0.1),找到「端口转发」/「虚拟服务器」选项。
- 添加规则:外部端口设为你用的80/8080,内部IP是运行XAMPP设备的局域网IP(比如192.168.1.105),内部端口和外部端口一致,协议选TCP(或TCP+UDP)。
- 本地/路由器防火墙
- Windows:打开「Windows Defender防火墙→高级设置→入站规则」,新建规则允许Apache的
httpd.exe通过对应端口,或直接放行XAMPP Apache程序。 - 第三方杀毒/防火墙软件:检查是否拦截了该端口的入站请求,需手动添加放行规则。
- 路由器防火墙:部分路由器自带防火墙,需确认已放行对应端口的外部访问。
- Windows:打开「Windows Defender防火墙→高级设置→入站规则」,新建规则允许Apache的
三、公网IP类型判断与DuckDNS配置
- 确认公网IP是否为独立IP
- 百度搜索「我的IP」获取公网IP,对比路由器WAN口显示的IP:
- 两者一致:直接用
http://公网IP:端口测试(用手机流量,别连WiFi),能访问则基础配置生效。 - 两者不一致:说明是运营商CGNAT内网IP,普通端口转发无效,需用内网穿透工具配合DuckDNS。
- 两者一致:直接用
- 百度搜索「我的IP」获取公网IP,对比路由器WAN口显示的IP:
- DuckDNS设置
- 注册DuckDNS账号,获取专属域名(如
xxx.duckdns.org)。 - 下载对应系统的IP更新脚本(Windows用bat,Linux用sh),填入你的域名和DuckDNS token,设置定时运行,确保域名始终指向你的公网IP。
- CGNAT场景:用免费临时穿透工具ngrok,执行
ngrok http 80,会生成一个临时公网地址,直接分享给朋友测试;或用frp搭建稳定穿透服务配合DuckDNS使用。
- 注册DuckDNS账号,获取专属域名(如
四、测试步骤
- 局域网内用设备IP+端口访问,确认Apache正常运行。
- 用手机流量访问
http://公网IP:端口或http://你的DuckDNS域名:端口,能打开PHP页面即为成功。 - 若仍失败,用
telnet 公网IP 端口测试端口是否开放,或用在线端口检测工具确认端口可被外部访问。
内容的提问来源于stack exchange,提问作者life3less
相关产品推荐
相关产品推荐

