
本文详解如何让 php 内置开发服务器响应 example.com 域名请求——核心在于本地 dns 解析(如修改 hosts 文件),而非 php 服务器本身配置,因为其不支持虚拟主机。
PHP 自带的内置 Web 服务器(php -S)是一个轻量级开发工具,适用于快速测试脚本或小型项目。但需明确一个关键前提:它原生不支持基于域名的虚拟主机(Virtual Host)。这意味着你无法通过命令行参数直接让 php -S “监听 example.com”——服务器本身只绑定 IP 和端口,域名解析完全由客户端(浏览器)和操作系统协作完成。
因此,要实现“在浏览器访问 http://example.com 时,实际请求被路由到本地 PHP 服务器”,你需要完成两步:
✅ 第一步:启动 PHP 服务器并正确绑定地址
避免仅绑定 localhost(即 127.0.0.1),因为它可能无法响应来自 example.com 的请求(尤其在某些系统或网络栈下存在解析/回环策略差异)。推荐显式绑定到 127.0.0.1 或 0.0.0.0(后者允许多设备访问,生产环境慎用):
# 推荐:绑定到 127.0.0.1,端口 8000(避免占用 80 需 root 权限) php -S 127.0.0.1:8000 router.php # 或绑定到所有接口(局域网内其他设备也可访问) php -S 0.0.0.0:8000 router.php
⚠️ 注意:若使用 localhost 作为主机名启动(如 php -S localhost:8000),部分系统会将其解析为 IPv6 地址 ::1,而 example.com 在 hosts 中通常映射到 127.0.0.1(IPv4),可能导致协议不匹配失败。故统一使用 127.0.0.1 更可靠。
✅ 第二步:将 example.com 解析到本地回环地址
这是最关键的一步——告诉你的操作系统:“当任何程序(包括浏览器)请求 example.com 时,请把它指向 127.0.0.1”。
立即学习“PHP免费学习笔记(深入)”;
▪ 方法:修改系统 hosts 文件(最简单、推荐用于开发)
编辑 hosts 文件,添加一行映射:
| 系统 | hosts 文件路径 |
|---|---|
| macOS / Linux | /etc/hosts |
| Windows | C:\Windows\System32\drivers\etc\hosts |
以管理员(或 root)权限打开该文件,追加:
127.0.0.1 example.com
✅ 保存后无需重启,大多数系统立即生效(如遇缓存问题,可执行 sudo dscacheutil -flushcache(macOS)或 ipconfig /flushdns(Windows))。
此时,在浏览器中访问 http://example.com:8000 即可正常加载你的 PHP 应用。
❌ 不推荐或不适用的方案说明
- DNS 注册与 A 记录配置:example.com 是 IANA 保留的示例域名,不可注册;即使使用自有域名,将开发环境暴露至公网 DNS 既不安全也不必要。
- 本地 DNS 服务器(如 dnsmasq):适用于团队多设备协同开发,但对单机调试属于过度设计,增加维护成本。
- PHP 路由器脚本伪造 Host 头:无法绕过浏览器发起请求前的 DNS 解析阶段,纯属无效尝试。
✅ 补充:支持 HTTPS?
PHP 内置服务器不支持 HTTPS。若需 https://example.com,必须配合反向代理(如 Nginx + Let’s Encrypt 本地证书)或使用专业工具(如 Laravel Valet、Devilbox)。
总结
让 example.com 指向本地 PHP 服务,本质是「客户端 DNS 解析 + 服务端端口监听」的组合方案:
- 用 php -S 127.0.0.1:PORT 启动服务;
- 在 hosts 中添加 127.0.0.1 example.com;
- 浏览器访问 http://example.com:PORT。
这既简洁可靠,又完全符合开发场景的安全与隔离原则。











