phpenv 不支持单个项目开启多个服务端口,需通过添加多个独立站点、各绑定不同端口实现;其底层 apache/nginx 限制每个 virtualhost/server 块仅监听一个端口,界面也未提供多端口配置入口。

phpEnv 本身不支持单个项目“开启多个服务端口”——它管理的是整套服务(Apache/Nginx + PHP + MySQL),每个服务实例只绑定一个主端口;所谓“多端口”,实际是通过添加多个独立站点,各自绑定不同端口来实现的。
为什么不能直接让一个 phpEnv 站点监听多个端口
phpEnv 底层用的是 Apache 或 Nginx。Apache 的 Listen 指令可以配置多个端口,但每个 VirtualHost 块只能绑定一个端口(或通配符 *:8080);Nginx 同理,server 块的 listen 是单值字段。phpEnv 的图形界面没有暴露“为同一个站点配置多个 listen”的入口,强行改配置文件也容易被重启时覆盖。
所以,正确思路不是“一个站点开多个端口”,而是“多个站点,各占一个端口”。
在 phpEnv 中添加第二个(及以上)端口站点的实操步骤
以 Windows 上最新版 phpEnv(2026 年稳定版)为例,操作路径清晰、无需手动改 conf:
- 打开 phpEnv 主界面 → 点击「站点管理」→ 「添加站点」
- 填写站点信息时,关键两处必须显式设置:
-
网站端口:不要留空或填 80,比如填8081(确保该端口未被占用) -
网站目录:选另一个项目根目录(如D:\www\project-b),不能和已有站点重复
-
- 点击「确定」保存 → phpEnv 会自动:
- 在 Apache 的
httpd-vhosts.conf中新增一个<virtualhost></virtualhost>块 - 在
httpd.conf中追加一行Listen 8081 - 重启 Apache 使生效
- 在 Apache 的
- 验证:浏览器访问
http://localhost:8081,应加载对应目录下的index.php
常见错误与绕不过去的坑
你大概率会遇到这些情况:
-
端口被占用:启动失败时 phpEnv 通常会弹窗提示。用命令
netstat -ano | findstr :8081查进程 PID,再用tasklist | findstr "PID"定位程序,关掉 Skype、WebStorm 内置服务器、或其他 phpEnv 实例 - 改了端口但没生效:别只点「启动」,要先点「保存配置」再「重启 Apache」;phpEnv 的「启动」按钮不会自动重载 vhost 配置
-
PHP 版本不匹配:每个站点可单独指定 PHP 版本(如 7.4 / 8.2),但如果你在
8081站点里用了match()这类 8.0+ 函数,却给它绑定了 PHP 7.4,就会报Fatal error: Uncaught Error: Call to undefined function match() -
静态资源 404:如果项目用了前端路由(如 Vue Router history 模式),需在该站点的 Apache 配置中额外启用
mod_rewrite并配置.htaccess,否则/user/123会 404
替代方案:不用 phpEnv,更轻量的多端口选择
如果你只是想临时并行跑几个 PHP 项目,又不想折腾 Apache 配置:
- 直接用 PHP 内置服务器:
php -S localhost:8001 -t ./project-a和php -S localhost:8002 -t ./project-b,完全绕过 phpEnv - 用 VS Code 插件「PHP Server」,右键项目文件夹 →「PHP Server: Serve project」,自动分配空闲端口
- 若需 HTTPS 或重写规则,推荐用
laravel-sail或docker-compose起多个 nginx+php-fpm 容器,端口映射更干净
phpEnv 的多端口本质是 Apache 多 VirtualHost 的封装,它适合需要长期稳定运行多个传统 PHP 站点的场景;而快速验证、前后端分离、或框架项目,内置服务器或容器反而更省事。端口本身不难配,难的是配完之后请求能不能真正走到 PHP 而不是被 Apache 拦截、被防火墙丢弃、或被浏览器同源策略卡住——这些细节,比点几下界面重要得多。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











