Apache启动失败因80端口被占,应先用netstat -ano | findstr :80查PID并结束对应进程;若需改端口,须同步修改httpd.conf中Listen和ServerName(如80→8080)、httpd-ssl.conf中三处443→8443,以及properties.ini中apache_server_port和apache_server_ssl_port,最后重启服务。

Apache 启动失败且日志显示 Port 80 in use,基本就是端口被占——不用猜,直接改 httpd.conf 里的 Listen 和 ServerName 就能解决。
查谁占了 80 端口:netstat + 任务管理器最直接
先确认是不是真被占了,别一上来就改配置。打开命令行执行:
netstat -ano | findstr :80
如果输出里有 PID(比如 1234),就打开任务管理器 → “详细信息”页 → 找到该 PID 对应的进程名。常见占用者有:httpd.exe(另一个 Apache)、Skype.exe、System(背后可能是 World Wide Web Publishing Service)、vmware-hostd.exe。
- 如果是用户进程(如 Skype),直接在任务管理器里右键“结束任务”
- 如果是
System占用,Win+R 输入services.msc,找到 “Web Deployment Agent Service” 或 “World Wide Web Publishing Service”,右键停止 - 改端口是兜底方案,不是首选;强行结束系统服务可能影响其他开发工具
改 httpd.conf 里的 Listen 和 ServerName
只改 Listen 80 不够,ServerName localhost:80 也必须同步,否则 Apache 能启动但重定向、虚拟主机、phpMyAdmin 链接都会出错。
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
- 打开
XAMPP\apache\conf\httpd.conf - 搜索
Listen 80,改成比如Listen 8080(别用 8000,某些杀软会拦截) - 搜索
ServerName localhost:80,改成ServerName localhost:8080 - 注意跳过带
#的注释行,比如#Listen [::]:80不用动 - 保存后重启 Apache,控制面板里对应端口应显示为
8080
HTTPS 也要同步改 httpd-ssl.conf
如果你开了 SSL(比如用 phpMyAdmin 的 HTTPS 登录、或本地测试 HTTPS 接口),只改 HTTP 端口没用——Apache 启动时仍会卡在 Listen 443 报错。
- 打开
XAMPP\apache\conf\extra\httpd-ssl.conf - 改三处:把
Listen 443→Listen 8443,<VirtualHost _default_:443>→<VirtualHost _default_:8443>,ServerName localhost:443→ServerName localhost:8443 - 改完不重启 Apache?它不会加载新 SSL 配置,
Start按钮会一直灰着 - 浏览器访问 HTTPS 时地址要写全:
https://localhost:8443/phpmyadmin
XAMPP 控制面板 Admin 按钮打不开?还得调 properties.ini
改完配置文件,点面板上的 Admin 按钮还是跳 http://localhost/,页面 404——因为控制面板自己记着旧端口。
- 关闭 XAMPP 控制面板(右下角托盘也要退出,不然改了也不生效)
- 编辑
XAMPP\properties.ini,找到apache_server_port=80改成apache_server_port=8080 - 如果用了 SSL,顺手改下
apache_server_ssl_port=443→apache_server_ssl_port=8443 - 再双击启动
xampp-control.exe,这时点Admin才会跳转到正确地址
真正麻烦的不是改哪几行,而是改漏——比如只动了 httpd.conf 却忘了 httpd-ssl.conf,或者改了配置但没关干净后台进程导致新端口又被占。每次改完,务必看控制面板端口号是否更新、error.log 是否还有监听失败报错。

















