phpEnv启用81和82端口需三步:一、在httpd.conf中添加Listen 81和Listen 82;二、在httpd-vhosts.conf中配置两个VirtualHost块,分别绑定localhost:81/82及对应目录与Require all granted权限;三、彻底重启phpEnv进程并用netstat验证监听状态。

phpEnv 默认只监听 80 端口,想让 81 和 82 端口同时生效,必须手动改 Apache 配置,且要同步处理监听声明、虚拟主机绑定、目录权限三处,缺一不可。
修改 httpd.conf 添加额外 listen 指令
打开 phpEnv 安装目录下的 Apacheconfhttpd.conf(路径类似 D:phpEnvApacheconfhttpd.conf),找到已有 Listen 80 行,在它下方新增两行:
Listen 81 Listen 82
注意:不要删除或注释掉 Listen 80,否则默认站点会失效;端口号不能重复,也不能被系统其他程序占用(可用 netstat -ano | findstr :81 检查)。
启用并编辑 httpd-vhosts.conf 配置多 VirtualHost
确保 httpd.conf 中这行已取消注释:
立即学习“PHP免费学习笔记(深入)”;
#Include conf/extra/httpd-vhosts.conf
→ 删除开头的 #,变成:
Include conf/extra/httpd-vhosts.conf
然后打开 Apacheconfextrahttpd-vhosts.conf,在文件末尾追加两个 <virtualhost></virtualhost> 块:
<VirtualHost *:81>
DocumentRoot "D:/phpEnv/www/site81"
ServerName localhost:81
<Directory "D:/phpEnv/www/site81">
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
<VirtualHost *:82>
DocumentRoot "D:/phpEnv/www/site82"
ServerName localhost:82
<Directory "D:/phpEnv/www/site82">
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
关键点:
-
ServerName必须写成localhost:81形式,否则 Apache 启动时可能报错或匹配失败 - Windows 下路径用正斜杠
/或双反斜杠\,单反斜杠会导致解析错误 -
Require all granted是 Apache 2.4+ 的权限语法,旧版用Order allow,deny+Allow from all,phpEnv 默认是 2.4+,别混用
重启 phpEnv 并验证端口是否真正监听
关闭 phpEnv 主界面,再重新启动 —— 仅点击「重启 Apache」按钮不够,必须完整重启整个 phpEnv 进程,否则配置不重载。
启动后执行命令验证:
netstat -ano | findstr ":81|:82"
应看到类似输出:
TCP 0.0.0.0:81 0.0.0.0:0 LISTENING 12345
如果没结果,说明 Apache 没加载成功,检查 Apachelogserror.log 最末几行,常见错误包括:
-
Address already in use: AH00072: make_sock: could not bind to address [::]:81→ 端口被占用 -
Syntax error on line XX of D:/phpEnv/Apache/conf/extra/httpd-vhosts.conf→ 路径引号缺失、标签未闭合、拼写错误 - 访问
http://localhost:81显示 403 Forbidden →DocumentRoot目录不存在,或<directory></directory>权限块漏写Require all granted
实际部署时最容易忽略的是:phpEnv 的「网站管理」界面里看不到 81/82 端口的图形化配置入口,所有多端口操作都得靠手改配置文件,改完必须彻底重启,且 Apache 错误日志是唯一可靠的排错依据。



















