phpEnv 不支持安装多个 Nginx 实例,仅管理单一 Nginx 进程,多站点需通过修改 nginx.conf 添加 server 块实现虚拟主机隔离;如需真正独立的多个 Nginx,须手动部署并配置端口、PHP-FPM 等。

phpEnv 本身不支持安装多个 Nginx 实例
phpEnv 是一个面向 Windows 的 PHP 集成环境,它的设计目标是「开箱即用、单环境快速切换」,底层只管理一套 Nginx(或 Apache)服务。它没有提供「并行运行多个独立 Nginx 进程」的界面或配置入口。你看到的「多站点」能力,本质是通过 server 块在**同一个 Nginx 主进程内**实现虚拟主机隔离,不是多个 Nginx。
试图在 phpEnv 界面里点击「添加新 Web 服务器」或「安装第二个 Nginx」会失败——因为它的服务管理模块只识别一个 nginx.exe 路径,且启动脚本硬编码了单一配置文件位置(如 phpenv\nginx\conf\nginx.conf)。
想在同一台 Windows 机器上跑多个 Nginx,得绕过 phpEnv
如果你确实需要多个完全独立的 Nginx(比如一个跑测试站用 8080 端口,另一个跑预发布站用 8000 端口,互不干扰、配置分离、可单独启停),必须手动部署额外 Nginx 实例,phpEnv 不参与也不兼容这类操作。
- 下载官方 Nginx Windows 版(
nginx-1.25.5.zip这类),解压到独立目录,例如C:\nginx-test - 修改其
conf\nginx.conf:把listen 80;改成未被占用的端口(如listen 8080;),确保root和server_name指向你自己的项目路径 - 用命令行启动:
C:\nginx-test\nginx.exe -c C:\nginx-test\conf\nginx.conf;停止则用taskkill /f /im nginx.exe(注意这会杀掉所有 nginx 进程) - phpEnv 自带的 Nginx 和你手动部署的 Nginx 不能共用
php-fpm端口(如9000),需为每个 Nginx 配置不同的fastcgi_pass,比如一个连127.0.0.1:9000,另一个连127.0.0.1:9001,并对应调整 php-fpm 的www.conf中的listen地址
phpEnv 多站点的正确打开方式:全靠 nginx.conf 的 server 块
phpEnv 真正支持的「多 Web 服务器」其实是「多虚拟主机」,全部塞进它自带的那一个 Nginx 里。关键就是编辑 phpenv\nginx\conf\nginx.conf 文件,在 http 块内追加多个 server 块:
立即学习“PHP免费学习笔记(深入)”;
server {
listen 80;
server_name site-a.test;
root "D:/sites/site-a/public";
index index.php;
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
include fastcgi.conf;
}
}
server {
listen 80;
server_name site-b.test;
root "D:/sites/site-b/public";
index index.php;
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
include fastcgi.conf;
}
}
然后在 Windows 的 C:\Windows\System32\drivers\etc\hosts 里加两行:
127.0.0.1 site-a.test127.0.0.1 site-b.test
最后在 phpEnv 界面点「重载 Nginx」即可生效。这种方式共享 PHP-FPM 进程和日志,但域名、根目录、SSL 配置可完全独立。
容易被忽略的坑:phpEnv 的「重载」不等于 nginx -s reload
phpEnv 界面点「重载 Nginx」实际执行的是先 nginx -s stop 再 start nginx.exe,属于硬重启。如果配置写错,Nginx 启动失败,phpEnv 不会报具体错误,只会显示「启动失败」——此时必须手动进命令行,cd 到 phpenv\nginx 目录,运行 nginx.exe -t 查看真实报错,比如 unknown directive "server_name" 或端口被占。
另外,phpEnv 的「服务管理」对 Nginx 是黑盒,它不会校验你手改的 nginx.conf 语法,也不会自动备份旧配置。每次升级 phpEnv 版本时,它可能覆盖你自定义的 nginx.conf,建议把修改后的配置另存为 nginx.conf.custom 并做好版本记录。



















