XAMPP 无法运行 Supabase,因其本质无关:Supabase 是基于 PostgreSQL、Elixir Realtime 和 GoTrue 的独立全栈平台,不依赖 Apache/PHP/MySQL;官方仅支持 Docker 启动完整服务,端口由 CLI 自动管理,与 XAMPP 配置无任何兼容性。

XAMPP 本身不支持 Supabase,也无法通过改端口让 Supabase 在 XAMPP 内运行。Supabase 是一个独立的全栈开源平台,依赖 PostgreSQL、Realtime(基于 Elixir)、GoTrue(认证服务)等组件,和 Apache/PHP/MySQL 完全无关。
为什么不能用 XAMPP 运行 Supabase
Supabase 不是 PHP 应用,也不跑在 Apache 或 MySQL 上:
- 它后端核心是 PostgreSQL(XAMPP 自带的 MySQL 无法替代)
- 它的实时订阅、认证、存储、函数等模块由独立服务进程提供,需用 docker compose 启动整套服务
- httpd.conf 或 my.ini 里改端口,对 Supabase 的启动、连接、路由毫无作用
Supabase 本地运行的唯一标准方式
官方只支持 Docker 方式启动完整本地环境:
- 必须安装 docker 和 docker-compose(v2.20+)
- 执行 supabase start 前需先运行 supabase init 初始化项目目录
- 默认监听多个端口:54322(PostgreSQL)、54321(Studio UI)、54323(Realtime)等,这些端口由 Supabase CLI 自动分配并管理
- 若端口冲突,CLI 会报错提示,此时应改用 supabase start --host 0.0.0.0 或手动编辑 supabase/config.toml 中的 api.port、db.port 等字段
如果非要和 XAMPP 共存,注意这三点
不是为了“集成”,而是避免互相干扰:
- 关闭 XAMPP 的 Apache(占 80/443)和 MySQL(占 3306),因为 Supabase 的 PostgreSQL 默认用 54322,不冲突,但你本地若另开了 MySQL 实例,可能被误认为是 Supabase 数据库
- 不要试图把 Supabase 的 studio(http://localhost:54321)反向代理到 XAMPP 的 Apache 下——Supabase Studio 是单页应用,含 WebSocket 和大量 API 路由,Apache 的 mod_proxy_wstunnel 配置极易出错且无必要
- 你的 PHP 项目(放在 xampp/htdocs)如需调用 Supabase,只通过 HTTP 请求访问 http://localhost:54321 或 Supabase 的 REST API(http://localhost:54321/rest/v1/...),不需要任何 XAMPP 配置参与
Supabase 的端口不是“配置项”,而是服务拓扑的一部分;强行塞进 XAMPP 框架,只会掩盖它真正的依赖关系和调试路径。
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










