如何在一个XAMPP环境下同时部署多个端口运行PbootCMS?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1179个文字,预计阅读时间需要5分钟。
XAMPP默认只监听80端口
启用 Apache 多端口监听(Listen 指令)
Apache 不会自动响应非 80 端口的请求,必须显式声明。这步漏掉,后续所有配置都无效。
- 打开
D: mpppacheconfhttpd.conf - 找到
Listen 80这一行,在它下方新增你要用的端口,例如:Listen 8080Listen 8081Listen 8082 - 确保这些端口号没被系统或其它程序占用(如 Skype、IIS、Docker Desktop 常占 80/443/8080)
- 改完保存,**不要重启 Apache**,先验证语法:
命令行进入D: mpppachein,运行httpd -t,输出Syntax OK才算通过
为每个端口配置独立 VirtualHost(不是靠 DocumentRoot 切换)
不能只改 DocumentRoot 全局路径,必须用 <VirtualHost *:8080> 显式绑定端口+目录——否则 Apache 会把所有非 80 请求丢给第一个匹配的 <VirtualHost> 或直接 404。
- 确认
httpd.conf中已取消注释:Include conf/extra/httpd-vhosts.conf - 编辑
D: mpppacheconfextrahttpd-vhosts.conf,添加类似结构:
<VirtualHost *:8080> ServerName localhost DocumentRoot "D:/xampp/htdocs/pboot-test" <Directory "D:/xampp/htdocs/pboot-test"> Require all granted AllowOverride All </Directory> </VirtualHost> <VirtualHost *:8081> ServerName localhost DocumentRoot "D:/xampp/htdocs/pboot-prod" <Directory "D:/xampp/htdocs/pboot-prod"> Require all granted AllowOverride All </Directory> </VirtualHost>
-
DocumentRoot必须是绝对路径,结尾**不加斜杠**(D:/xampp/htdocs/pboot-test✅,D:/xampp/htdocs/pboot-test/❌) -
AllowOverride All是必须的,PbootCMS 的伪静态规则(.htaccess)依赖它生效 - 每个
<VirtualHost>块里的ServerName写localhost即可,不需要配 hosts——因为你是用端口区分,不是域名
PbootCMS 项目目录权限与 runtime 写入问题
多端口部署时,每个实例的 runtime 目录必须独立且可写,否则会报“会话目录写入权限不足”或日志无法生成——尤其当多个实例共用同一套源码但指向不同 DocumentRoot 时,容易误复用 runtime。
- 为每个 PbootCMS 实例准备**独立目录**(如
pboot-test、pboot-prod),不要软链接或复制后忘记改 runtime 路径 - 确保每个目录下
runtime、data、config三个文件夹存在,且 Windows 权限设为“完全控制”(右键 → 属性 → 安全 → 编辑 → 添加 Users → 勾选全部) - 如果仍报错,检查
runtime下是否有子目录(如cache、log、session),它们也得有写权限 - PbootCMS 7.x 默认用
session.save_path指向runtime/session,这个路径不能被其它实例覆盖
浏览器访问与常见 403/404 错误定位
端口开了、虚拟主机写了、目录权限也给了,但浏览器一访问就 403 或 404——大概率是 Apache 没加载新配置,或 httpd-vhosts.conf 里路径写错。
- 每次改完配置,必须在 XAMPP 控制面板里点
Apache → Stop再Start,不能只点 Restart(有时不生效) - 访问地址必须带端口:
http://localhost:8080、http://127.0.0.1:8081,不能省略:8080 - 403 错误:先看
httpd.conf里是否还有老的<Directory>块限制了根目录(搜索Require all denied),把它注释掉或改成granted - 404 错误:检查
DocumentRoot路径是否真实存在,大小写是否一致(Windows 不敏感但路径中斜杠方向必须是/或\,不能混用) - 如果首页能打开但后台登录跳转 404,大概率是
.htaccess没生效 → 回头确认AllowOverride All是否写对位置
真正麻烦的不是配端口,而是每个 PbootCMS 实例的 runtime 和数据库连接必须彻底隔离——共用一个 runtime 就会互相覆盖 session,共用一个数据库却没改 config/database.php 里的表前缀,轻则后台混乱,重则数据错乱。动手前先想清楚:这几个实例之间,到底要共享什么,又必须隔开什么。
本文共计1179个文字,预计阅读时间需要5分钟。
XAMPP默认只监听80端口
启用 Apache 多端口监听(Listen 指令)
Apache 不会自动响应非 80 端口的请求,必须显式声明。这步漏掉,后续所有配置都无效。
- 打开
D: mpppacheconfhttpd.conf - 找到
Listen 80这一行,在它下方新增你要用的端口,例如:Listen 8080Listen 8081Listen 8082 - 确保这些端口号没被系统或其它程序占用(如 Skype、IIS、Docker Desktop 常占 80/443/8080)
- 改完保存,**不要重启 Apache**,先验证语法:
命令行进入D: mpppachein,运行httpd -t,输出Syntax OK才算通过
为每个端口配置独立 VirtualHost(不是靠 DocumentRoot 切换)
不能只改 DocumentRoot 全局路径,必须用 <VirtualHost *:8080> 显式绑定端口+目录——否则 Apache 会把所有非 80 请求丢给第一个匹配的 <VirtualHost> 或直接 404。
- 确认
httpd.conf中已取消注释:Include conf/extra/httpd-vhosts.conf - 编辑
D: mpppacheconfextrahttpd-vhosts.conf,添加类似结构:
<VirtualHost *:8080> ServerName localhost DocumentRoot "D:/xampp/htdocs/pboot-test" <Directory "D:/xampp/htdocs/pboot-test"> Require all granted AllowOverride All </Directory> </VirtualHost> <VirtualHost *:8081> ServerName localhost DocumentRoot "D:/xampp/htdocs/pboot-prod" <Directory "D:/xampp/htdocs/pboot-prod"> Require all granted AllowOverride All </Directory> </VirtualHost>
-
DocumentRoot必须是绝对路径,结尾**不加斜杠**(D:/xampp/htdocs/pboot-test✅,D:/xampp/htdocs/pboot-test/❌) -
AllowOverride All是必须的,PbootCMS 的伪静态规则(.htaccess)依赖它生效 - 每个
<VirtualHost>块里的ServerName写localhost即可,不需要配 hosts——因为你是用端口区分,不是域名
PbootCMS 项目目录权限与 runtime 写入问题
多端口部署时,每个实例的 runtime 目录必须独立且可写,否则会报“会话目录写入权限不足”或日志无法生成——尤其当多个实例共用同一套源码但指向不同 DocumentRoot 时,容易误复用 runtime。
- 为每个 PbootCMS 实例准备**独立目录**(如
pboot-test、pboot-prod),不要软链接或复制后忘记改 runtime 路径 - 确保每个目录下
runtime、data、config三个文件夹存在,且 Windows 权限设为“完全控制”(右键 → 属性 → 安全 → 编辑 → 添加 Users → 勾选全部) - 如果仍报错,检查
runtime下是否有子目录(如cache、log、session),它们也得有写权限 - PbootCMS 7.x 默认用
session.save_path指向runtime/session,这个路径不能被其它实例覆盖
浏览器访问与常见 403/404 错误定位
端口开了、虚拟主机写了、目录权限也给了,但浏览器一访问就 403 或 404——大概率是 Apache 没加载新配置,或 httpd-vhosts.conf 里路径写错。
- 每次改完配置,必须在 XAMPP 控制面板里点
Apache → Stop再Start,不能只点 Restart(有时不生效) - 访问地址必须带端口:
http://localhost:8080、http://127.0.0.1:8081,不能省略:8080 - 403 错误:先看
httpd.conf里是否还有老的<Directory>块限制了根目录(搜索Require all denied),把它注释掉或改成granted - 404 错误:检查
DocumentRoot路径是否真实存在,大小写是否一致(Windows 不敏感但路径中斜杠方向必须是/或\,不能混用) - 如果首页能打开但后台登录跳转 404,大概率是
.htaccess没生效 → 回头确认AllowOverride All是否写对位置
真正麻烦的不是配端口,而是每个 PbootCMS 实例的 runtime 和数据库连接必须彻底隔离——共用一个 runtime 就会互相覆盖 session,共用一个数据库却没改 config/database.php 里的表前缀,轻则后台混乱,重则数据错乱。动手前先想清楚:这几个实例之间,到底要共享什么,又必须隔开什么。

