phpenv不支持同一域名自动路由不同端口,需手动配置多端口监听及带端口的virtualhost,如:8080和:8081,并在hosts中仅映射a.test到127.0.0.1,访问时必须显式带端口号。

phpEnv 里不能靠域名直接指向不同端口
phpEnv 本身不支持「同一个域名 + 不同端口」自动路由到不同项目——它底层用的是 Apache 或 Nginx,而 HTTP 协议里 Host 请求头不携带端口信息(除非显式写出,如 http://example.com:8080),所以 Web 服务器无法仅凭 ServerName example.com 区分 :80 和 :8080 的请求目标。你真正要配的,是「监听多个端口 + 每个端口绑定独立虚拟主机」。
Apache 下必须同时改 Listen 和 VirtualHost
phpEnv 默认只监听 80 端口。想用 a.test:8080 和 a.test:8081 访问两个项目,得两步走:
- 打开
phpEnv\Apache\conf\httpd.conf,在Listen 80后追加:Listen 8080<br>Listen 8081
- 打开
phpEnv\Apache\conf\extra\httpd-vhosts.conf,写两个明确带端口的VirtualHost:<virtualhost><br> ServerName a.test<br> DocumentRoot "D:/phpEnv/www/project-a"<br><directory><br> Require all granted<br></directory><br></virtualhost><br><br><virtualhost><br> ServerName a.test<br> DocumentRoot "D:/phpEnv/www/project-b"<br><directory><br> Require all granted<br></directory><br></virtualhost>
- hosts 文件只需写一次:
127.0.0.1 a.test(不需要重复或加端口) - 重启 phpEnv 的 Apache 服务
浏览器访问时端口必须显式写出
配置生效后,a.test 默认走 80 端口(如果没配 80 的 VirtualHost 就会 404);你要访问其他端口,URL 必须带冒号和数字:
-
http://a.test:8080→ 进 project-a -
http://a.test:8081→ 进 project-b -
http://a.test→ 只有配了*:80的VirtualHost才响应,否则可能落到 Apache 默认页或报错
别指望浏览器自动把 a.test 解析成不同端口——那是反向代理或 DNS SRV 记录的事,phpEnv 不处理。
容易被忽略的权限和路径问题
常见失败点不在语法,而在路径和权限:
-
DocumentRoot路径里的反斜杠\在 Windows 下建议全换成正斜杠/,避免 Apache 解析失败 - 目录路径末尾不要加斜杠,比如写
"D:/phpEnv/www/project-a",不是"D:/phpEnv/www/project-a/" - 确保每个项目目录下有
index.php或index.html,否则DirectoryIndex会 403 - Apache 错误日志在
phpEnv\Apache\logs\error.log,配完打不开时第一眼看它,搜Invalid argument或Cannot assign requested address
端口冲突比想象中更常见:8080、8081 容易被 Docker、IDEA 内置服务或旧版 Java 进程占着,netstat -ano | findstr :8080(Windows)能快速确认。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











