nginx多端口配置需为每个端口定义独立server块,监听唯一端口、设置专属root路径及index文件,并确保fastcgi_pass与php-fpm监听地址一致;修改后须执行nginx -t校验并-s reload生效。

确认 phpEnv 使用的是 Nginx 而非 Apache
打开 phpEnv 安装目录(如 C:phpEnv),进入 config
ginx 目录,检查是否存在 nginx.conf;若看到 http { ... include conf.d/*.conf;,说明走的是 Nginx。如果只有 apache.conf 或服务名含 Apache,那当前没启用 Nginx,需先在 phpEnv 控制面板里切换 Web 服务器为 Nginx。
在 nginx.conf 中添加独立 server 块监听新端口
不要改默认的 listen 80 块,直接在 http { } 内追加完整 server 块,例如:
server {
listen 8081;
server_name localhost;
root "C:/phpEnv/www/project-a";
index index.php index.html;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ .php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
- 每个
listen端口号必须唯一,不能和已有的80、443或其他自定义端口冲突 -
root必须用正斜杠/或双反斜杠\,单反斜杠会导致路径解析失败 - Windows 下
fastcgi_pass通常指向127.0.0.1:9000(php-cgi 默认端口),确认 phpEnv 的 PHP-FPM 实际监听端口是否一致(查configphpphp-fpm.conf中的listen = 127.0.0.1:9000)
修改后必须 reload Nginx,不是 restart
phpEnv 界面点「重启」可能只重载 Apache 或跳过 Nginx 配置校验。正确做法是:
- 用管理员权限打开命令行,进入
C:phpEnv ginx - 执行
nginx.exe -t:确认配置语法无误,输出success才继续 - 执行
nginx.exe -s reload:仅重载配置,不中断现有连接 - 如果提示
bind() to 0.0.0.0:8081 failed,说明端口被占用(常见于 Skype、IIS、另一实例的 Nginx),用netstat -ano | findstr :8081查 PID 并结束进程
PHP 文件无法执行?重点检查 fastcgi_pass 和 index 顺序
访问 http://localhost:8081 显示空白或下载 index.php,大概率是 PHP 未正确转发。关键点:
-
location ~ .php$块必须存在且位置合理(不能写在location /外层) -
fastcgi_pass地址必须和 php-cgi.exe 启动时监听的地址完全一致(比如写成127.0.0.1:9000却实际监听127.0.0.1:9001就会失败) -
index指令中index.php必须排在index.html前面,否则遇到同名文件时优先返回静态页 - Windows 路径中的空格或中文会导致
SCRIPT_FILENAME解析错误,建议项目路径全用英文、无空格
nginx -t 和 netstat 过一遍——多数“不生效”问题其实压根没进到 Nginx 流程里。php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











