Windows启动Apache报错80端口被PID4占用无法启动如何解决
Windows环境Apache启动报80端口被PID4占用解决方法
故障报错
启动Apache服务时返回如下错误,服务无法启动:
2:30:55 PM [Apache] Problem detected! 2:30:55 PM [Apache] Port 80 in use by "Unable to open process" with PID 4! 2:30:55 PM [Apache] Apache WILL NOT start without the configured ports free! 2:30:55 PM [Apache] You need to uninstall/disable/reconfigure the blocking application 2:30:55 PM [Apache] or reconfigure Apache and the Control Panel to listen on a different port
注意:PID 4是Windows系统内核进程的固定分配ID,代表端口是被系统托管的HTTP.sys相关服务占用,不是普通第三方程序,无法直接通过任务管理器结束进程释放,强制结束该进程会导致系统蓝屏、功能异常。
解决方法
两类方案按需选就行,不用都做。
方案1:释放80端口供Apache使用
适合必须用80端口对外提供Web服务的场景:
- 以管理员身份打开CMD或PowerShell,执行命令
netsh http show servicestate view=requestq,查看具体挂载在HTTP.sys上占用80端口的服务,常见的占用源包括:- 系统自带IIS服务(对应服务名W3SVC/World Wide Web Publishing Service)
- SQL Server报表服务(SSRS)
- Windows远程管理服务(WinRM)
- Web部署代理服务、Windows更新传递优化服务
- 按
Win+R输入services.msc回车打开服务管理器,找到上一步查到的占用服务:- 如果不需要该服务,直接将其启动类型改为「禁用」,点击「停止」即可
- 如果需要保留该服务,修改该服务自身的监听配置,让其不再占用80端口
- 如果查出来是IIS占用但不需要IIS,也可以直接在管理员终端执行两条命令快速禁用:
sc stop W3SVC sc config W3SVC start= disabled - 操作完成后执行
netstat -ano | findstr ":80",如果返回为空就代表80端口已经释放,此时正常启动Apache即可。
方案2:修改Apache监听端口避开占用
适合不需要强制使用80端口、不想修改系统服务配置的场景,操作最简单:
- 先选一个没被占用的端口(比如8080、8090都可以),执行
netstat -ano | findstr ":你选的端口号"确认返回为空,避免改完又撞端口 - 打开Apache安装目录下的
conf/httpd.conf配置文件 - 找到
Listen 80配置项,将80修改为你选好的未占用端口,例如修改为Listen 8080 - 同文件内找到
ServerName localhost:80配置项,将后面的端口号同步修改为和上一步一致的值,例如ServerName localhost:8080 - 如果启用了HTTPS服务,还要打开
conf/extra/httpd-ssl.conf文件,将其中的Listen 443配置项也修改为未被占用的端口(比如4433),避免443端口同样被系统占用 - 如果使用的是XAMPP、WAMP这类集成环境,修改完Apache配置后,还要同步修改面板内的Apache服务端口配置,避免面板误判端口占用
- 保存所有配置后重启Apache即可,后续访问本地Web服务需要带上配置的新端口,例如
http://localhost:8080
内容的提问来源于stack exchange,提问作者user19126561
相关产品推荐
相关产品推荐

