先查清占用进程:以管理员身份运行cmd,执行netstat -ano | findstr :80得pid,再用tasklist | findstr 确认进程名;若pid为4,不可强制结束,应禁用world wide web publishing service或http.sys服务。

phpEnv 启动失败提示端口占用,说明有其他进程正监听 80、443、3306 或 9000 等默认端口,必须先定位并处理,不能跳过排查直接改配置。
怎么快速查出哪个程序占了 80 端口(Windows)
phpEnv 自带「本地 TCP 端口进程列表」工具,但有时不显示完整 PID 或权限不足。更可靠的方式是手动执行:
- 以管理员身份打开 CMD,运行
netstat -ano | findstr :80,看最后一列的 PID - 再运行
tasklist | findstr <pid></pid>(把<pid></pid>换成实际数字),确认进程名 - 常见“伪装者”:Skype(旧版默认抢 80)、
System(PID 4,实为 HTTP.sys 驱动)、IIS、SQL Server Reporting Services、VMware Hostd - 若 PID 是 4,别用
taskkill /F /PID 4—— 这会蓝屏。应进services.msc关闭World Wide Web Publishing Service或禁用 HTTP.sys(需修改注册表HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\HTTP\Parameters\ListenOnlyList,新手慎动)
phpEnv 里怎么改 Apache/Nginx/MySQL 的端口
phpEnv 界面右下角有「设置」按钮,点开后可直接修改 Apache、Nginx、MySQL 端口 —— 这是最安全的方式,它会自动同步更新对应配置文件。但要注意:
- Apache 修改后,
httpd.conf中的Listen 80和<virtualhost></virtualhost>必须一致,否则启动报错Invalid VirtualHost address - Nginx 修改端口后,检查
nginx.conf里listen 80;和fastcgi_pass 127.0.0.1:9000;是否仍匹配;PHP-FPM 端口(如 9000)通常不用改,除非你同时调高了 PHP-FPM 监听地址 - MySQL 改端口(如从 3306 → 3307)后,务必同步更新 phpEnv「数据库管理」页里的连接端口,否则 phpMyAdmin 打不开;PHP 项目中
mysqli_connect()或 PDO DSN 里的:3306也要手动改
改完端口还启动失败?重点检查这三处
很多用户改完端口重启仍失败,问题往往不在端口本身,而在关联配置没跟上:
-
httpd.conf或nginx.conf文件编码是否为 UTF-8 无 BOM?Windows 记事本保存容易带 BOM,导致服务拒绝加载配置 - 防火墙是否放行新端口?特别是 Windows Defender 防火墙,默认只放行 80/443;临时测试可先关闭防火墙验证
- phpEnv 安装路径含中文或空格(如
C:\Program Files\phpEnv)会导致 Apache 启动时找不到libhttpd.dll,报错Cannot load modules/mod_access_compat.so—— 建议重装到纯英文路径如D:\phpenv
端口冲突本质是资源竞争,不是配置问题。优先 kill 掉非必要占用进程,比反复改端口更省时间;而改端口时最容易被忽略的,是虚拟主机块内端口与主 Listen 不一致、以及 MySQL 连接参数未同步更新 —— 这两点卡住的人最多。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











