phpEnv的“站点管理”仅为图形化前端,不生成独立VirtualHost/server块,需手动配置hosts、vhosts.conf或Nginx server块,并配合phpenv实现多PHP版本隔离。

phpEnv 的“站点管理”不是标准虚拟主机
phpEnv 自带的站点管理界面(点击「站点管理 → 增加」)本质是 Apache/Nginx 的简化封装,**不生成独立 VirtualHost 或 server 块**,而是通过内部路由规则 + DocumentRoot 映射实现多目录访问。它适合本地开发快速验证,但不能替代真正的虚拟主机配置。
常见错误现象:
- 添加站点后浏览器报
404 Not Found—— 实际是 phpEnv 没有自动重启 Apache/Nginx,或域名未写入hosts - 多个站点共用同一 PHP 版本,无法按站隔离 —— phpEnv 的「站点」不绑定 PHP-FPM 池,全局 PHP 版本生效
- 子目录型多站(如
/en、/pt)在 phpEnv 界面里无法直接配置 —— 它只支持域名级入口
Windows 下必须手动改 hosts 才能访问自定义域名
phpEnv 不会自动修改系统 hosts 文件,所有你填在「网站域名」里的内容(比如 site-a.com)都必须手动映射到 127.0.0.1,否则 DNS 解析失败,浏览器根本连不上。
操作步骤:
立即学习“PHP免费学习笔记(深入)”;
- 用记事本(需管理员权限)打开
C:\Windows\System32\drivers\etc\hosts - 在文件末尾追加一行:
127.0.0.1 site-a.com(每行一个域名) - 保存后清空 DNS 缓存:
ipconfig /flushdns - 如果还打不开,检查 phpEnv 主界面右下角服务状态 —— Apache 和 MySQL 图标必须是绿色
想真正按域名隔离站点?得进配置文件硬改
phpEnv 的「站点管理」只是图形化前端,底层仍依赖 Apache 的 vhosts.conf 或 Nginx 的 nginx.conf。要实现严格隔离(不同域名、不同 PHP 版本、不同日志路径),必须手动编辑:
- Apache 配置路径:
phpEnv\Apache\conf\vhosts.conf,在里面加完整的<VirtualHost *:80>块 - Nginx 配置路径:
phpEnv\Nginx\conf\vhost\下新建site-a.com.conf,内容为标准server块 - 每个
VirtualHost必须显式指定DocumentRoot和ServerName,否则会被主配置兜底 - 改完后务必点 phpEnv 界面上的「重载配置」或「重启 Apache/Nginx」,不能只点「保存」
PHP 版本无法 per-site 切换,得靠 phpenv 配合
phpEnv 自身不支持每个站点用不同 PHP 版本。它启动时只加载一个全局 PHP(由界面「软件设置 → PHP 版本」决定)。如果你需要 site-a.com 用 PHP 7.4、site-b.com 用 PHP 8.2,唯一可靠方案是:
- 先用
phpenv安装多个版本:phpenv install 7.4.33、phpenv install 8.2.12 - 在每个站点根目录放一个
.php-version文件,内容为对应版本号(如7.4.33) - 修改 Apache 的
php.ini或 Nginx 的fastcgi_pass,指向phpenv生成的 socket(如unix:/home/xxx/.phpenv/versions/7.4.33/var/run/php-fpm.sock) - 这意味着你放弃了 phpEnv 的一键 PHP 切换,转而用
phpenv+ 手动配置接管 PHP 运行时
这个组合很有效,但代价是 phpEnv 的图形界面基本退化为 Web 服务器启停工具 —— 真正的控制权回到了配置文件和命令行手里。



















