phpEnv多站点需直接编辑主nginx.conf添加server块,用正斜杠路径、fastcgi_pass 127.0.0.1:9000、hosts绑定域名,并通过nginx -t验证后重启控制面板。

phpEnv 是一个 Windows 下的 PHP 环境集成包(类似 XAMPP、WAMP),它自带 Nginx、PHP、MySQL,面向本地开发。但它的默认配置不支持开箱即用的多站点——你得手动改 Nginx 配置,且要注意它和标准 Linux Nginx 的路径、权限、进程模型差异很大。
phpEnv 中 Nginx 多站点必须改 nginx.conf,不能只靠 sites-enabled
phpEnv 的 Nginx 配置是扁平化的:它没有 /etc/nginx/sites-available 或 sites-enabled 机制,所有虚拟主机都写在主配置文件里(通常是 D:\phpEnv\nginx\conf\nginx.conf 或 D:\phpEnv\server\nginx\conf\nginx.conf,取决于安装路径)。
你如果照搬 Linux 教程去建 conf.d/ 子目录再 include,大概率会失败——因为默认配置里根本没这行 include。
- 必须直接编辑
nginx.conf,在http块内添加多个server块 - 每个
server块开头就写清listen 80;和server_name site1.test site1.local; - 不要省略
root,比如root D:/phpEnv/www/site1;—— 注意 Windows 路径用正斜杠或双反斜杠,单反斜杠会解析失败 -
index推荐写全:index index.php index.html;,否则 .php 文件可能不触发 PHP-FPM
PHP-FPM 在 phpEnv 里是全局共用的,但每个站点要配对正确的 fastcgi_pass
phpEnv 默认只启一个 PHP-FPM 实例(监听 127.0.0.1:9000 或 tcp://127.0.0.1:9000),所有站点都走这个端口。所以你不用为每个站点建独立 FPM 池——但必须确保每个 server 块里的 PHP location 都指向它:
- 正确写法:
fastcgi_pass 127.0.0.1:9000; - 错误写法:
fastcgi_pass unix:/run/php/php8.1-fpm.sock;(这是 Linux 路径,Windows 下不存在) - 如果你改过 PHP-FPM 监听方式(比如改成命名管道),
fastcgi_pass必须同步改,否则 502
常见错误现象:
- 所有站点首页能打开,但点链接进子页面就 404 →
location /里漏了try_files $uri $uri/ /index.php?$query_string;(尤其 Laravel、ThinkPHP 类框架必需) - 访问 PHP 文件显示源码 →
location ~ .php$块没生效,检查是否被前面的location /覆盖,或正则写成了.php$(少转义)
hosts 文件必须手动加条目,DNS 不起作用
phpEnv 是本地环境,没有公网 DNS 解析。浏览器发请求时 Host 头就是你输的域名(如 site1.test),Nginx 靠这个匹配 server_name。但系统得先知道这个域名指向哪台机器。
立即学习“PHP免费学习笔记(深入)”;
- 编辑
C:\Windows\System32\drivers\etc\hosts(需管理员权限) - 加一行:
127.0.0.1 site1.test site2.test admin.site1.test - 别写
localhost当 server_name —— 它会被第一个server块捕获,后续站点全失效 - 大小写不敏感,但建议全小写统一管理
修改后必须用 nginx -t + 重启 phpEnv 控制面板
phpEnv 的 Nginx 不响应 systemctl 或 service 命令。每次改完配置:
- 打开命令行,cd 到
D:\phpEnv\nginx\(或你的实际路径) - 运行:
nginx -t—— 看是否输出nginx: configuration file nginx.conf test is successful - 如果报错,重点看行号和关键词:
invalid number of arguments in "root" directive(root 后多空格)、unknown directive "include"(用了未启用的 include) - 测试通过后,在 phpEnv 控制面板里点「重启 Nginx」,不是「重载」—— 它的重载功能经常不生效
Windows 路径分隔符、PHP-FPM 通信方式、缺少 systemd 管理、以及 hosts 绑定强依赖,这四点是 phpEnv 多站点最常卡住的地方。别套 Linux 经验,先确认你改的是哪个 nginx.conf,再逐行验证。



















