Apache端口冲突可四步解决:一、用netstat和taskkill终止占用进程;二、修改httpd.conf中Listen和ServerName端口号;三、在services.msc中禁用W3SVC等系统HTTP服务;四、关闭杀毒软件或代理工具的端口劫持功能。

查哪个进程占了 80、443 或 3306 端口
Windows 下最直接的方式是用 netstat 加 tasklist 组合定位。以管理员身份打开命令提示符或 PowerShell,执行:
-
netstat -ano | findstr :80—— 查 80 端口(Apache HTTP) -
netstat -ano | findstr :443—— 查 443 端口(Apache HTTPS) -
netstat -ano | findstr :3306—— 查 3306 端口(MySQL)
输出中最后一列数字是 PID(如 TCP 0.0.0.0:80 0.0.0.0:0 LISTENING 4 中的 4)。接着运行 tasklist /FI "PID eq 4" 就能知道是 System、vmware-hostd.exe 还是 Skype.exe 在占——别急着杀,先确认是不是系统关键服务(比如 PID=4 是 Windows 的 HTTP 服务,不能随便关)。
改 Apache 的 80 和 443 端口(httpd.conf + httpd-ssl.conf)
修改配置文件比关进程更稳妥,尤其当你不想动 Skype、VMware 或 IIS 时。两个文件必须同步改,否则 HTTPS 会启动失败:
- 编辑
C:\xampp\apache\conf\httpd.conf:把Listen 80改成Listen 8080,再把ServerName localhost:80改成ServerName localhost:8080 - 编辑
C:\xampp\apache\conf\extra\httpd-ssl.conf:改三处——Listen 443→Listen 8443,<VirtualHost _default_:443>→<VirtualHost _default_:8443>,ServerName localhost:443→ServerName localhost:8443
改完保存,重启 Apache。访问地址就得写成 http://localhost:8080 和 https://localhost:8443,浏览器会报证书警告(因为不是标准 443),点“高级→继续访问”就行。
XAMPP 8.0.30 是一款免费、开源的跨平台 Web 服务器集成包,专为快速搭建本地 PHP 开发环境而设计。该版本核心组件包括:Apache 2.4.56、MySQL 8.0.33、PHP 8.0.30、phpMyAdmin 5.2.1 等。它支持 Windows、Linux 和 macOS 系统,可让开发者在个人电脑上轻松模拟服务器环境,无需复杂配置即可运行 WordPress、Thin
改 MySQL 的 3306 端口(my.ini + phpMyAdmin + PHP 代码)
只改 my.ini 不够,phpMyAdmin 和你写的 PHP 连接代码默认还连 3306,会报“Connection refused”:
- 编辑
C:\xampp\mysql\bin\my.ini,在[mysqld]段下加一行:port=3307(不能写在[client]或文件末尾) - 编辑
C:\xampp\phpMyAdmin\config.inc.php,找到$cfg['Servers'][$i]['host'],改成'127.0.0.1:3307'(注意必须用127.0.0.1,不能写localhost,Windows 下后者走命名管道,不走端口) - PHP 代码里所有
mysqli_connect('localhost', ...)都要改成mysqli_connect('127.0.0.1', ..., ..., ..., 3307),或者用 PDO DSN:mysql:host=127.0.0.1;port=3307
改完记得用记事本或 VS Code 保存为 UTF-8 无 BOM 格式,否则 MySQL 可能静默启动失败。
用 XAMPP 控制面板 Config 按钮快速改(适合新手)
控制面板里点 Apache 行右侧的 Config → Apache (httpd.conf),就能直接打开对应文件编辑,不用手动找路径。但要注意:
- 它只帮你打开文件,不会自动替换所有 80;你仍得手动搜
Listen和ServerName两处 - SSL 配置不在这个菜单里,还得再点一次
Config→Apache (httpd-ssl.conf)单独改 - MySQL 的
my.ini不在 Config 菜单中,必须自己去\mysql\bin\目录找
真正容易被忽略的是:改完端口后,所有依赖它的外部工具(SQLyog、DBeaver、Laravel 的 .env、甚至前端开发服务器里的 proxy 配置)都得同步更新地址和端口,否则连接不上不是配置没生效,而是调用方还在找老端口。

















