xampp默认仅监听80端口,需手动修改httpd.conf添加listen 8080、listen 8081等行启用多端口,并在httpd-vhosts.conf中为每个端口配置独立virtualhost,指定唯一documentroot、带端口的servername及allowoverride all权限。

确认 Apache 是否已启用多端口监听
XAMPP 默认只监听 80 端口,想在同一台机器跑多个 PrestaShop 实例(比如测试版、开发版、模块调试版),必须手动配置 Apache 启用额外端口。直接改 httpd.conf 是最可靠的方式,别依赖 XAMPP 控制面板里的“服务设置”——它不提供端口批量管理。
打开 C:\xampp\apache\conf\httpd.conf(Windows)或 /Applications/XAMPP/xamppfiles/etc/httpd.conf(macOS),找到这一行:
Listen 80
在它下面新增你需要的端口,例如:
Listen 8080<br>Listen 8081
注意:不要重复使用已被占用的端口(如 Skype、VMware、IIS 常占 80/443/8080)。可用 netstat -ano | findstr :8080(Windows)或 lsof -i :8080(macOS/Linux)验证。
为每个端口配置独立的 VirtualHost
只加 Listen 不够,Apache 不知道哪个请求该交给哪个站点。必须在 httpd-vhosts.conf 中为每个端口写一个 <virtualhost></virtualhost> 块,且 ServerName 必须明确绑定到对应端口。
确保 httpd.conf 中这行未被注释:
Include conf/extra/httpd-vhosts.conf
然后编辑 conf/extra/httpd-vhosts.conf,添加类似以下内容:
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
<virtualhost><br> DocumentRoot "C:/xampp/htdocs/prestashop-dev"<br> ServerName localhost:8080<br><directory><br> AllowOverride All<br> Require all granted<br></directory><br></virtualhost>
关键点:
• ServerName 必须带端口号,否则 Apache 可能路由错乱
• AllowOverride All 不可省,PrestaShop 依赖 .htaccess 做 URL 重写
• 每个实例的 DocumentRoot 路径必须唯一,不能共用同一份源码目录
每个 PrestaShop 实例需独立数据库与 config.inc.php
多个实例共享同一个 MySQL 数据库会直接冲突——表名相同、缓存键打架、后台登录互相踢出。必须为每个端口实例创建独立数据库和用户。
操作步骤:
• 访问 http://localhost/phpmyadmin
• 新建数据库,如 prestashop_dev、prestashop_test
• 新建用户,如 ps_dev,仅授予对该库的 SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, ALTER, INDEX 权限
• 安装时填入对应库名和用户,**不要复用 root**(XAMPP 8.0+ 默认禁用空密码 root 登录)
安装完成后,检查每个实例的 config/settings.inc.php(PrestaShop 8.x 是 app/config/parameters.php),确认其中数据库配置指向正确的库和用户。改错一个,整个实例就报 PDOException: SQLSTATE[HY000] [1045]。
避免 .htaccess 和缓存路径冲突
即使端口和数据库都分开了,如果两个实例解压自同一 ZIP 包,.htaccess 文件可能被覆盖或缺失,导致 SEO 链接 404、后台路由失效。更隐蔽的问题是 var/cache/ 目录权限或路径硬编码冲突。
务必执行:
• 解压 PrestaShop 源码时,**每个端口对应一个完全独立的文件夹**(如 prestashop-dev、prestashop-test)
• 检查每个文件夹下是否存在 .htaccess;若无,从官网 ZIP 包里单独提取,或用命令行解压(unzip prestashop_8.1.7.zip,不是双击解压)
• 进入每个实例目录,运行:chmod -R 775 var/cache/ var/logs/ img/ download/(macOS/Linux)或右键 → 属性 → 安全 → 给 Apache 用户(如 Everyone 或 daemon)写入权限(Windows)
• 安装完成后的首次访问,浏览器地址栏必须带端口号(http://localhost:8080),否则 Apache 会按默认虚拟主机处理,可能进错站
最易忽略的是:PrestaShop 的缓存键生成逻辑里包含域名(含端口),但部分模块或自定义代码会硬写 localhost,导致跨端口实例间 session 或模板缓存污染。真遇到后台卡死、登录后跳回首页,先清掉所有 var/cache/prod/ 下的子目录再试。










