Windows 10 2018年4月更新致Apache24无法启动,求故障原因
故障原因及解决方案分析
我之前帮朋友排查过几乎一模一样的Windows更新后Apache端口绑定失败的问题,结合你的描述,核心原因是Windows 10 2018年4月更新后,系统级的HTTP.sys服务(或关联的IIS默认站点)抢占了80端口——哪怕你指定绑定127.0.0.1:80也没用,因为HTTP.sys是系统层面的监听服务,会覆盖所有IP地址的80端口占用,包括回环地址。
更新前你的Apache能正常运行,是因为当时这个系统服务没有启用,或者没有抢占80端口的需求,而这次更新可能默认开启了依赖HTTP.sys的功能(比如Windows Update后台服务、IIS默认站点自动激活等)。
验证端口占用的步骤
先确认到底是什么进程在占用80端口:
- 右键开始菜单,选择「Windows PowerShell(管理员)」或「命令提示符(管理员)」
- 运行命令:
netstat -ano | findstr ":80",你会看到类似TCP 0.0.0.0:80 0.0.0.0:0 LISTENING 1234的输出,最后一串数字就是占用端口的进程PID - 接着运行:
tasklist /fi "PID eq 1234"(把1234换成你找到的PID),就能看到具体是哪个进程在占用——大概率是svchost.exe,对应的服务是HTTP或者World Wide Web Publishing Service(IIS的服务)。
解决方法
方法1:停止占用端口的系统服务
- 如果是IIS的
World Wide Web Publishing Service:- 按
Win+R输入services.msc打开服务管理器 - 找到「World Wide Web Publishing Service」,右键选择「停止」
- 双击该服务,把启动类型改成「手动」,避免下次开机自动抢占端口
- 按
- 如果是系统的HTTP服务:
- 在管理员命令提示符里运行:
net stop http,系统会提示依赖的服务也会停止,输入Y确认 - 要彻底禁用的话,运行:
sc config http start= disabled(注意start=后面必须加空格)
注意:禁用HTTP服务可能影响部分系统功能(比如Windows Update、远程桌面的Web访问),如果之后出现相关问题,再把启动类型改回「自动」即可。
- 在管理员命令提示符里运行:
方法2:修改Apache监听端口
如果不想改动系统服务,最简单的方式是换个未被占用的端口:
- 打开Apache的
httpd.conf配置文件 - 把
Listen 127.0.0.1:80改成Listen 127.0.0.1:8080(或者8000、8888这类常用备用端口) - 保存配置后重启Apache,之后访问你的站点需要加上端口号,比如
http://localhost:8080
方法3:给Apache预留80端口(保留80端口访问)
如果坚持要用80端口,可以让HTTP.sys把回环地址的80端口预留出来给Apache:
- 打开管理员命令提示符
- 运行:
netsh http add urlacl url=http://127.0.0.1:80/ user=Everyone - 重启Apache,此时就能正常绑定
127.0.0.1:80了,系统服务不会再抢占这个端口。
内容的提问来源于stack exchange,提问作者Carl Barrett
相关产品推荐
相关产品推荐

