phpenv多域名绑定需手动修改nginx配置文件(位于/phpenv/vhost/下),在server_name中空格分隔多个域名,并同步在系统hosts文件中逐行添加127.0.0.1映射,最后执行nginx -t校验并nginx -s reload生效。

phpEnv 本身不处理域名绑定,多域名指向同一根目录靠的是它内置的 Nginx 配置 + 系统 hosts 文件配合;别名域名不是 phpEnv 的功能开关,而是 Nginx server_name 指令里写多个域名的结果。
phpEnv 的 Nginx 配置文件在哪、怎么改
phpEnv 默认把站点配置放在 /phpenv/vhost/ 目录下,每个站点对应一个 .conf 文件(如 default.conf 或你自定义的站点名.conf)。它不像宝塔那样提供「别名」图形入口,所有域名都得手动加进 server_name 行。
- 用管理员权限打开对应 conf 文件,找到类似
server_name localhost;这一行 - 改成空格分隔的多个域名,例如:
server_name local.test www.local.test api.local.test; - 注意末尾不能有逗号,不能换行,不能带
http://或端口 - 改完必须执行
nginx -t检查语法,再运行nginx -s reload生效 - 如果改了但访问新域名仍 404,大概率是
nginx -s reload没执行,或系统 hosts 里没加对应映射
hosts 文件必须同步加,且格式要严丝合缝
phpEnv 不会自动帮你写 hosts,这步漏掉,浏览器根本发不出请求到本地 Nginx。Windows 在 C:\Windows\System32\drivers\etc\hosts,macOS/Linux 在 /etc/hosts。
- 每行只写一个映射:例如
127.0.0.1 local.test,前后不能有空格或 tab - 不要写
www.local.test就以为local.test自动生效——它们是两个独立域名,都要单独加 - 加完保存后,在终端运行
ping local.test,确认返回127.0.0.1,否则 Nginx 根本收不到这个 Host 头 - Windows 用户改完 hosts 后建议顺手跑一遍
ipconfig /flushdns,macOS 执行sudo dscacheutil -flushcache
为什么加了 server_name 还是跳默认站或 404
常见原因不是 phpEnv 有问题,而是 Nginx 匹配逻辑被绕过了。Nginx 按 server 块顺序匹配,第一个 server_name 匹配上的才生效。
- 检查有没有其他
server块(比如 default.conf)监听了*:80且server_name是空或 _,它会兜底捕获所有未匹配域名 - 确认你的目标 conf 文件确实被主
nginx.conf的include指令加载了,路径别写错 - 如果用了 HTTPS,
server_name必须同时出现在http和https的两个server块里,否则 http 域名能通,https 就 404 - phpEnv 默认可能开了「防跨站」机制,若根目录下有
.user.ini或启用了 open_basedir,新增域名访问时 PHP 可能因路径限制报错,而非 Nginx 层面的 404
想让不同域名显示不同页面,但共用同一套代码
这时候不能只靠 Nginx 配置,得在 PHP 入口层做判断。比如在 index.php 开头加:
if ($_SERVER['HTTP_HOST'] === 'api.local.test') {
require __DIR__ . '/api/index.php';
exit;
}
if ($_SERVER['HTTP_HOST'] === 'admin.local.test') {
require __DIR__ . '/admin/index.php';
exit;
}
- 这种方案不改变 URL 地址栏,用户始终看到自己输入的域名
- 注意
$_SERVER['HTTP_HOST']可被客户端伪造,生产环境需配合白名单校验 - 如果用了框架(如 Laravel),更推荐在路由层或中间件里做 host 分流,而不是硬编码 require
- 别用
header("Location: ...")跳转来模拟——那会暴露真实路径,也破坏 SEO 友好性
最常被忽略的一点:phpEnv 的配置修改不会自动重载,nginx -s reload 和 hosts 刷新这两步,少一个都不行。很多人卡在“明明写了域名却打不开”,其实只是 reload 忘了敲。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











