phpEnv的Apache端口需在phpenv\apache\conf\httpd.conf中修改Listen 80和<VirtualHost *:80>为一致新端口(如8001),并同步更新ServerName localhost:8001;还需修改phpenv\php\php-fpm.conf的listen端口及httpd-vhosts.conf中fastcgi_pass端口,最后分别重启Apache与PHP-FPM服务。

phpEnv 是 Windows 下轻量级 PHP 本地环境(类似 XAMPP 精简版),默认用 Apache + PHP-FPM,但它的端口配置逻辑和标准 Apache 不完全一致——它把端口控制权交给了 httpd.conf 和 php-fpm.conf 两处,且界面不暴露端口设置项。改错地方就白改。
phpEnv 的 Apache 端口在哪改?只动 httpd.conf 里的 Listen 和 VirtualHost
phpEnv 的 Apache 配置文件固定在 phpenv\apache\conf\httpd.conf。别去碰 phpEnv 控制面板或任何 .ini 文件,它们不生效。
- 打开
phpenv\apache\conf\httpd.conf,搜索Listen 80,改成你想要的,比如Listen 8001 - 继续搜
<VirtualHost *:80>,改成匹配的<VirtualHost *:8001> - 检查
ServerName行(通常在VirtualHost块内),确保是ServerName localhost:8001;如果没有这行,手动加一行 - 保存后必须重启 phpEnv 的 Apache 服务:右键托盘图标 → “Restart Apache”,不是“Restart All”(那会连 PHP-FPM 一起重起,可能引发端口冲突)
phpEnv 的 PHP-FPM 端口也要同步改,否则 502 错误
phpEnv 默认用 TCP 方式让 Apache 连 PHP-FPM(fastcgi_pass 127.0.0.1:9000),不是 Unix socket。如果你只改了 Apache 端口,没动 PHP-FPM 监听端口,Apache 请求会卡在转发环节,浏览器显示 502 Bad Gateway。
- 打开
phpenv\php\php-fpm.conf(注意不是php.ini) - 找
listen = 127.0.0.1:9000,改成和 Apache 端口无关、但未被占用的端口,比如listen = 127.0.0.1:9001 - 再打开
phpenv\apache\conf\extra\httpd-vhosts.conf(或主httpd.conf中的VirtualHost块),找到fastcgi_pass行,同步改为fastcgi_pass 127.0.0.1:9001 - 重启 PHP-FPM:托盘图标 → “Restart PHP-FPM”
验证时别只输 localhost,要带端口号访问
phpEnv 不自动注册域名或改 hosts,所以 http://localhost 永远指向 80 端口,跟你改的没关系。测试必须显式写端口:
立即学习“PHP免费学习笔记(深入)”;
- 浏览器访问
http://localhost:8001(假设你设的是 8001) - 如果打不开,先跑命令
netstat -ano | findstr :8001,确认是httpd.exe在监听;再跑netstat -ano | findstr :9001,确认php-cgi.exe或php-fpm.exe在监听 - 如果两个端口都占着但页面空白,检查 Apache 的
ErrorLog路径(httpd.conf里有定义),看是否有Connection refused类错误,大概率是fastcgi_pass和php-fpm.conf端口不一致
最容易被忽略的是:phpEnv 的 Apache 和 PHP-FPM 是两个独立进程,端口要各自配、各自重启,不能只改一处。而且它不校验配置语法,改错也不会报错,只会静默失败。



















