phpenv多端口配置本质是apache或nginx层操作:需在httpd-vhosts.conf中添加listen指令及对应virtualhost(apache),或在nginx.conf中配置多个server块并指定不同listen端口(nginx),路径用正斜杠,修改后必须重启服务并校验语法。

phpEnv 的端口配置本质是 Web 服务器层的事
phpEnv 本身不直接“配置多端口”,它只是把 Apache 或 Nginx 的配置暴露给你改。真正起作用的是你选的 Web 组件(Apache 还是 Nginx)及其监听行为。默认情况下,phpEnv 启动的是 Apache,监听 80 端口;若你手动切换到 Nginx,则监听 80 或 443。多端口部署,就是让同一个 Web 服务监听多个端口,并为每个端口配独立的 DocumentRoot 或 server 块。
Apache 下用 httpd-vhosts.conf 添加多端口 VirtualHost
打开 phpEnv 安装目录下的 Apache\conf\extra\httpd-vhosts.conf,不要只写 ServerName,必须显式声明 listen 端口并绑定对应站点:
Listen 8080
<virtualhost>
ServerName localhost:8080
DocumentRoot "D:/www/site-a"
<directory>
Require all granted
AllowOverride All
</directory></virtualhost>
Listen 8081
<virtualhost>
ServerName localhost:8081
DocumentRoot "D:/www/site-b"
<directory>
Require all granted
AllowOverride All
</directory></virtualhost>
- 必须在文件开头加
Listen 8080、Listen 8081,否则 Apache 启动会报错“address already in use”或直接忽略该<virtualhost></virtualhost> -
ServerName要带端口(如localhost:8080),否则请求可能被第一个匹配的<virtualhost></virtualhost>拦截 - 路径中的反斜杠
\必须全换成正斜杠/,Windows 下也一样——Apache 配置不认\ - 改完要重启 Apache,仅刷新 phpEnv 界面不生效
Nginx 下通过多个 server 块监听不同端口
如果你在 phpEnv 中启用了 Nginx(通过软件商店安装并切换),编辑 Nginx\conf\nginx.conf,在 http 块内追加:
server {
listen 8080;
server_name localhost;
root "D:/www/site-a";
index index.php index.html;
location / {
try_files $uri $uri/ /index.php?$args;
}
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;
}
}
server {
listen 8081;
server_name localhost;
root "D:/www/site-b";
index index.php index.html;
location / {
try_files $uri $uri/ /index.php?$args;
}
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;
}
}
- 两个
server块的listen值不能重复,且不能和系统其他服务(如 Skype、IIS)冲突 -
fastcgi_pass地址要和 phpEnv 中 PHP-FPM 实际监听地址一致(默认是127.0.0.1:9000,可在 phpEnv 的“PHP 设置”页确认) - 修改后必须运行
nginx -t校验语法(phpEnv 的命令行工具里可执行),再点“重载 Nginx” - 浏览器访问时必须带端口:http://localhost:8080,不能省略
hosts 文件不需要改,但得避开端口占用
用端口区分站点时,hosts 文件完全不用动——因为所有请求都发往 localhost,靠端口号路由。真正要盯紧的是端口是否被占:
- phpEnv 自带“TCP 端口监控”功能(在主界面右下角),点开就能看到
8080、8081是否已被System或svchost.exe占用 - 若被占,要么关掉占用进程,要么换更大端口(如
8888、9999),phpEnv 对端口号无硬性限制 - Windows 10/11 默认会用
1024以下端口跑 Hyper-V 或 WSL2 相关服务,建议多端口部署统一用8000以上
端口配置看着简单,但最容易栽在 Listen 漏写、路径斜杠写错、或没校验配置就重启服务——这三个地方一出错,Apache/Nginx 就静默失败,phpEnv 界面还显示“运行中”。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











