必须隔离端口、路径和php实例才能运行两个xampp:改apache监听端口(如80→8080)、mysql端口(3306→3307)与datadir、启用httpd-vhosts.conf、配置hosts绑定域名,且须用不同版本完整xampp包。

可以,但不是“直接双击两个 XAMPP 控制面板就同时跑起来”——必须隔离端口、路径和 PHP 实例,否则 Apache 或 MySQL 会因端口冲突或配置错乱直接启动失败。
修改 Apache 监听端口避免 80/443 冲突
两个 XAMPP 实例不能共用 Listen 80 和 Listen 443。默认都占着 80,一启第二个就报错 “Address already in use”。
- 打开第一个 XAMPP 的
D:\xampp\apache\conf\httpd.conf,确认Listen 80保持不变(若它是主开发环境) - 打开第二个 XAMPP 的同路径配置文件,把
Listen 80改成Listen 8080;把Listen 443(或Listen 442,视版本而定)改成Listen 444 - 顺手检查
httpd-ssl.conf里对应的Listen行,也同步改掉,否则 HTTPS 虚拟主机会 503 - 改完后在 XAMPP 控制面板点
Config → Apache (httpd.conf)验证路径是否指向当前实例目录,别漏掉ServerRoot和DocumentRoot
区分 PHP 版本:用独立安装包,别硬换 php 文件夹
直接替换 XAMPP 自带的 php 文件夹(比如把 php5 改名再塞进 php7)在新版 XAMPP(v3.3+)上大概率失效,Apache 启动时会报 Cannot load modules/libphp7.so 或直接静默退出。
电脑手机电子配件电子商城网站模板是一款提供手机、手表、电脑等电子配件和设备的电子商城宣传网站模板下载。提示:本模板调用到谷歌字体库,可能会出现页面打开比较缓慢。
- 正确做法是:下载不同版本的 完整可移植版 XAMPP(如
xampp-portable-windows-x64-7.4.33-0-VC15.zip和xampp-portable-windows-x64-8.2.12-0-VC17.zip),解压到不同路径,例如D:\xampp7和D:\xampp8 - 每个目录下单独运行自己的
xampp-control.exe,互不干扰 - 如果只想要多 PHP 版本而不需要多套 Apache/MySQL,更轻量的方式是用
phpswitch(macOS)或phpbrew(Linux/macOS),Windows 上推荐laragon或手动管理多个php.exe+ Nginx/FastCGI
配置虚拟主机让不同域名指向不同 XAMPP 实例
光改端口还不够——你总不能每次切项目都手动改浏览器地址栏写 localhost:8080 和 localhost:8090。用 VirtualHost + hosts 绑定才是真实开发流。
- 在每个 XAMPP 的
httpd-vhosts.conf中定义专属<virtualhost></virtualhost>块,注意:DocumentRoot必须是绝对路径,结尾不加斜杠(E:/xampp7/htdocs✅,E:/xampp7/htdocs/❌) - Windows 下编辑
C:\Windows\System32\drivers\etc\hosts(需管理员权限),添加:127.0.0.1 project7.test 127.0.0.1 project8.test
- 确保每个 XAMPP 的
httpd.conf中已取消注释:Include conf/extra/httpd-vhosts.conf,否则虚拟主机配置完全不生效 - 重启对应实例的 Apache 后,访问
http://project7.test就自动走xampp7,http://project8.test走xampp8,彼此隔离
MySQL 端口与数据目录必须彻底分离
两个 XAMPP 共用一个 MySQL 数据目录会导致锁表、崩溃甚至数据损坏;共用 3306 端口则第二个实例根本连不上。
- 修改第二个 XAMPP 的
my.ini(路径通常为D:\xampp8\mysql\bin\my.ini),改两处:[client] port=3307 [mysqld] port=3307 datadir="D:/xampp8/mysql/data"
-
datadir必须指向一个全新空文件夹,不能复用原xampp\mysql\data;首次启动前可手动复制mysql和performance_schema系统库进去,或运行mysqld --initialize - PHP 项目连接 MySQL 时,也要显式指定端口:
mysqli_connect('127.0.0.1', 'root', '', 'db', 3307),不能只写'127.0.0.1'
最易被忽略的是 httpd-vhosts.conf 的启用开关和 hosts 文件的管理员权限保存——这两步任一缺失,都会让你花两小时排查“为什么配置明明写了却没反应”。










