phpEnv虚拟主机配置本质是Apache/Nginx+hosts绑定,需同步修改httpd-vhosts.conf(或Nginx vhost配置)、hosts文件,并重启服务;路径须用绝对路径,ServerName与hosts条目须完全一致。

phpEnv 的虚拟主机配置本质是 Apache/Nginx + hosts 绑定
phpEnv 本身不提供独立的虚拟主机管理界面,它只是把 Apache 或 Nginx、PHP、MySQL 封装成一键启停的桌面工具。你看到的「Quick App → Create Virtual Host」这类功能,实际是它在后台自动修改 httpd-vhosts.conf(Apache)或 nginx.conf(Nginx)并写入 hosts 文件。所以多站点配置的关键不是 phpEnv 点几下,而是理解它改了什么、怎么改才不冲突。
Apache 模式下手动加虚拟主机:改三个地方缺一不可
如果你用的是 phpEnv 的 Apache 模式(默认),必须同时完成以下三步,否则访问会 404 或跳转到默认站:
- 确保
httpd.conf中已启用虚拟主机引入:检查这一行没被注释:Include conf/extra/httpd-vhosts.conf - 在
conf/extra/httpd-vhosts.conf末尾追加完整块,注意ServerName和DocumentRoot路径要绝对准确(Windows 下路径用正斜杠或双反斜杠,比如C:/phpenv/www/project1) - 在系统
hosts文件(C:\Windows\System32\drivers\etc\hosts)里加对应条目,例如:127.0.0.1 project1.test—— 域名不能带http://,也不能漏掉127.0.0.1
改完后必须点 phpEnv 界面的「Restart Apache」,仅刷新页面无效;若启动失败,看 phpEnv 底部状态栏报错,大概率是 DocumentRoot 路径不存在或 权限没放开。
Nginx 模式下新增站点:别直接改 nginx.conf,走 include 机制
phpEnv 切换到 Nginx 后,主配置 nginx.conf 通常只保留基础结构,真实站点配置靠 include 外部文件加载。常见陷阱是把新 server 块硬塞进 nginx.conf 里,结果下次 phpEnv 升级或重置配置时被覆盖。
- 先确认
nginx.conf的http块末尾有类似这行:include vhost/*.conf; - 在
conf/vhost/目录下新建文件,比如project2.test.conf,内容必须包含listen 80、server_name project2.test、root和 PHP fastcgi_pass(端口通常是127.0.0.1:9000) -
root路径别写相对路径,phpEnv 的工作目录不固定,一律用绝对路径,如C:/phpenv/www/project2 - 改完执行
nginx -t(phpEnv 控制台可输入)验证语法,成功再点「Reload Nginx」
如果访问返回 502,基本是 fastcgi_pass 指向的 PHP-FPM 没运行,或者端口被占用 —— phpEnv 默认只开一个 PHP-FPM 实例,多个虚拟主机共用它,不需要为每个站单独起进程。
phpEnv 多主机最易忽略的两个细节
一是 Windows 下路径权限问题:如果项目文件夹在 C:\Program Files 或用户文档等受保护路径,Apache/Nginx 可能因 UAC 权限读不到文件,导致 403;建议所有项目统一放在 C:/phpenv/www/ 下,这是 phpEnv 认可的安全路径。
二是 ServerName 必须和 hosts 里写的完全一致,包括大小写和末尾点号。比如 project1.test 和 project1.test.(结尾多一个点)会被当成不同域名,后者可能触发 DNS 回源失败。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











