“The site can’t be reached”是域名未解析所致,需手动在hosts文件中添加127.0.0.1 test.local,并清空DNS缓存、确保vhost配置与域名严格一致,且Web服务监听正确端口。

phpEnv 启动后浏览器显示 “The site can't be reached”,大概率是域名没解析到本地,不是 PHP 或 Apache 挂了。
为什么 phpEnv 的域名(比如 test.local)在浏览器打不开
phpEnv 默认用 test.local、dev.test 这类自定义域名,但这些域名不会自动被系统识别——它不像 localhost 那样有操作系统内置映射。浏览器根本不知道该连哪台机器,直接报 “The site can't be reached”。
常见错误现象:
- 能 ping 通
127.0.0.1,但 pingtest.local超时或提示 “unknown host” - Apache/Nginx 日志里没有访问记录,说明请求压根没进来
- 改用
http://127.0.0.1:8080能打开页面,证明服务本身是好的
必须手动把域名指向 127.0.0.1:改 hosts 文件
Windows 和 macOS/Linux 都要编辑系统 hosts 文件,添加一行映射:
立即学习“PHP免费学习笔记(深入)”;
127.0.0.1 test.local
具体路径:
- Windows:
C:\Windows\System32\drivers\etc\hosts(需用管理员权限的记事本打开) - macOS/Linux:
/etc/hosts(需sudo nano /etc/hosts)
改完保存,**必须清空 DNS 缓存**,否则旧缓存还在生效:
- Windows:
ipconfig /flushdns - macOS:
sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder - Linux(systemd-resolved):
sudo systemd-resolve --flush-caches
phpEnv 的 vhost 配置和 hosts 必须严格一致
phpEnv 的 Apache/Nginx 配置里写的 ServerName 或 server_name,必须和你写进 hosts 的域名完全一样(包括大小写、点号、有无 www)。
比如:
- vhost 配置里是
ServerName dev.test→ hosts 就得加127.0.0.1 dev.test - 如果配了泛解析如
ServerName *.test,hosts 里仍要单独列明具体域名,比如127.0.0.1 api.test - 不要指望
test(不带后缀)能自动匹配;浏览器默认补.com,会去查公网 DNS
改完 hosts 和 vhost 后,重启 phpEnv 的 Web 服务(不是只重启 PHP-FPM)。
额外检查点:防火墙和端口监听
即使域名解析对了,也可能被拦截:
- 确认 Apache/Nginx 监听的是
0.0.0.0:80或*:80,而不是仅127.0.0.1:80(部分 phpEnv 版本默认绑本地) - Windows 防火墙可能阻止 80 端口入站——临时关掉防火墙测试一次
- 运行
netstat -ano | findstr :80(Windows)或lsof -i :80(macOS/Linux),看是否有进程真正占着 80 端口 - 如果 80 被 Skype、IIS 或其他软件占用,phpEnv 会静默降级到 8080,但浏览器里仍要输
http://test.local:8080
域名解析失败这件事,表面是网络问题,实际是本地环境配置链上最前端的一环。少改一个 hosts、漏清一次 DNS 缓存、vhost 名字多打个空格,都会卡在这一步,而且没有任何错误日志可查——它根本没走到 Web 服务器那层。



















