ShopXO 是一套国内较成熟的企业级开源电商系统,采用 PHP + ThinkPHP 8 开发,定位并不只是简单的 B2C 商品商城,而是逐步扩展到 多商户、多门店、进销存、分销、营销、O2O、可视化装修 等业务场景。
项目遵循 MIT 开源协议,官方明确支持免费使用、商业使用和二次开发。
注意:插件生态不好说,可能是其他开源协议,或者是闭源,其中部分插件需要付费。
截至目前,GitHub 仓库约有 3.3K Stars、900+ Forks,说明项目在国内 PHP 开源商城领域具有一定的用户基础。
GitHub: https://github.com/gongfuxiang/shopxo/
主仓库 gongfuxiang/shopxo 是一个完整的商城应用,包括 Web 前台和管理后台。
另一个仓库 gongfuxiang/shopxo-uniapp 则是支持 H5、各种小程序,还支持编译成 Android/iPhone 的 App。
技术栈
ShopXO 当前基于 ThinkPHP 8 开发,而不是早期版本使用的 ThinkPHP 5.1。
ThinkPHP 8 Framework 本身要求 PHP >= 8.0,并依赖 ORM、容器、验证器等 ThinkPHP 官方组件。
ShopXO 后端
ShopXO 当前基于 ThinkPHP 8,ThinkPHP Framework 本身要求 PHP >= 8.0。
生产环境建议:
- Ubuntu 24.04
- PHP 8.2 / 8.3
- MySQL 8.0
- Nginx
- Composer 2.x
管理后台与 Web 前台
整体技术栈比较传统,与当前主流的 Vue/React + TypeScript + Vite SPA 架构相比明显更传统。
- PHP 服务端渲染(SSR):ThinkPHP Template
- jQuery:前端 JavaScript 基础框架
- Amaze UI:UI/CSS 框架
- wangEditor 5:富文本编辑器
- Cropper:图片裁剪
- Swiper:轮播/滑动组件
- Iconfont:Web 字体图标
- Highlight.js:代码语法高亮
官方 UniApp 前端
- Node.js
- npm / pnpm
- Vue
- UniApp
- Vite
uni-app 是 DCloud 推出的跨平台应用开发框架,基于 Vue 技术体系,使用 HTML、CSS、JavaScript 开发一套代码,可编译为 H5、微信/支付宝等小程序,以及 Android、iOS App。
它解决的是“一套代码,多端运行”,本身不是类似 Element Plus、Amaze UI 的 UI 组件库,但生态中有大量 UI 组件库可配合使用。
官方独立的 Form 项目目前采用 Vue 3、Vite、Element Plus、Pinia 等前端技术。
核心功能
ShopXO
│
┌──────────┼──────────┐
│ │ │
B2C B2B2C O2O
│ │ │
商品/订单 多商户 多门店
│ │ │
└──────────┼──────────┘
│
营销体系
│
┌─────────┼─────────┐
│ │ │
分销 会员 优惠
│ │ │
└─────────┼─────────┘
│
ERP
│
采购 / 库存 / 销售
ShopXO 的功能覆盖面比较广,可以按照业务域划分。
1. 商品中心
提供完整的商品管理能力:
- 商品 SPU
- 商品 SKU
- 商品规格
- 商品分类
- 商品品牌
- 商品图片
- 商品库存
- 商品评价
- 商品收藏
- 商品搜索
- 商品标签
- 商品上下架
- 商品批量操作
支持多种商品模式:
普通商品
├── 快递
├── 同城配送
├── 到店自提
├── 虚拟商品
└── 展示型商品
同时支持多仓库和独立库存管理。
2. 订单与交易
商城核心交易链路包括:
浏览商品
↓
加入购物车
↓
确认订单
↓
支付
↓
商家发货
↓
物流
↓
收货
↓
评价
同时覆盖:
- 订单管理
- 售后
- 退款
- 退货
- 发货
- 物流
- 自提
- 同城配送
- 虚拟订单
- 线下支付
- 扫码支付
- 代客下单
- 收银台
3. 营销系统
ShopXO 的营销能力是项目比较强的一部分。
包括:
- 优惠券
- 满减
- 满折
- 满送
- 秒杀
- 拼团
- 砍价
- 抽奖
- 预售
- 积分商城
- 签到
- 新人礼包
- 会员
- 礼品卡
- 组合商品
- 返现
- 返佣
例如抽奖支持:
九宫格
转盘
砸金蛋
拼团、砍价、预售等功能也可以与多商户、DIY 页面等能力组合使用。
4. 分销系统
ShopXO 内置比较完整的分销体系。
主要包括:
- 分销员
- 上下级关系
- 一级 / 二级 / 三级返佣
- 返积分
- 分享赚佣金
- SKU 级佣金
- 固定金额佣金
- 比例佣金
- 阶梯返佣
- 指定商品返佣
- 分销统计
- 商品海报
- 推荐宝
因此可以构建:
平台
│
└── 用户 A
│
├── 用户 B
│ ├── 用户 D
│ └── 用户 E
│
└── 用户 C
再按照分销规则计算佣金或积分。
5. 多商户
ShopXO 已经支持 B2B2C 类型的业务模式。
基本模型:
平台
│
├── 商户 A
│ ├── 商品
│ ├── 订单
│ └── 店铺
│
├── 商户 B
│ ├── 商品
│ ├── 订单
│ └── 店铺
│
└── 商户 C
├── 商品
├── 订单
└── 店铺
可以用于:
- 商家入驻
- 商家店铺
- 商家商品
- 商家订单
- 商家售后
- 商家结算
- 商家装修
- 商家独立经营
这意味着 ShopXO 不仅能够做自营商城,也可以作为平台型商城的基础系统。
6. 多门店与 O2O
针对实体门店,ShopXO 提供:
- 多门店
- 门店商品
- 门店库存
- 到店自提
- 同城配送
- 配送员
- 派单
- 转单
- 核销
- 预约
- 充值
- 次卡
- 收银台
配送体系甚至包含配送员管理、调度中心以及配送员小程序等能力。
因此可以用于:
线上商城
│
├── 商品购买
│
├── 到店自提
│
├── 同城配送
│
└── 门店消费
7. 进销存 ERP
这是 ShopXO 与普通开源商城比较明显的区别。
其业务进一步延伸到了进销存:
采购
│
▼
采购入库
│
▼
库存
│
├── 库存盘点
├── 库存调拨
└── 多仓库
│
▼
销售
│
▼
销售出库
涉及:
- 供应商
- 采购
- 采购入库
- 采购退货
- 销售
- 销售退货
- 多仓库
- 仓位
- 库存
- 库存盘点
- 库存调拨
- 客商
- 采购付款
- 销售收款
- Excel 导入导出
官方将进销存作为组件插件化,支持按需启用。
8. 可视化 DIY 装修
ShopXO 提供独立的 DIY 装修项目。
可以通过拖拽方式设计商城页面,例如:
- 商品
- 图片
- 轮播
- 视频
- 图片魔方
- 热区
- 文章
- 自定义组件
基本模式是:
后台
│
▼
DIY 页面编辑器
│
├── 拖拽组件
├── 调整布局
├── 配置数据
└── 发布
│
▼
商城前台
这使运营人员不需要修改 PHP / HTML 源码,就可以调整部分商城页面。
9. 可视化表单
ShopXO 还提供独立的 Form 表单项目。
包含:
- 单行文本
- 多行文本
- 数字
- 单选
- 多选
- 下拉
- 日期时间
- 定位
- 地址
- 手机
- 评分
- 富文本
- 子表单
- 图片上传
- 视频上传
同样采用可视化拖拽设计。官方 shopxo-form 项目本身也是开源项目。
Ubuntu 部署
最传统的部署方式是:
Internet
│
▼
Nginx
│
▼
PHP-FPM
│
▼
ShopXO
│
▼
MySQL
首先安装:
sudo apt update
sudo apt install -y \
nginx \
mysql-server \
php8.2-fpm \
php8.2-cli \
php8.2-mysql \
php8.2-curl \
php8.2-gd \
php8.2-mbstring \
php8.2-xml \
php8.2-zip \
git \
unzip
检查环境:
php -v
mysql --version
nginx -v
然后获取源码:
cd /var/www
sudo git clone \
https://github.com/gongfuxiang/shopxo.git \
shopxo
安装 Composer 依赖:
cd /var/www/shopxo
composer install --no-dev --optimize-autoloader
然后创建 MySQL 数据库:
CREATE DATABASE shopxo
CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;
CREATE USER 'shopxo'@'localhost'
IDENTIFIED BY 'your-password';
GRANT ALL PRIVILEGES
ON shopxo.*
TO 'shopxo'@'localhost';
FLUSH PRIVILEGES;
最后配置 Nginx,将网站根目录指向 ShopXO 的 Web 入口目录,并让 PHP 请求交给 PHP-FPM。
生产环境再配置 HTTPS。
Docker 部署
如果只是自己部署一个 ShopXO 实例,我更推荐 Docker。
推荐架构:
Internet
│
▼
┌─────────┐
│ Caddy │
│ HTTPS │
└────┬────┘
│
▼
┌─────────┐
│ Nginx │
└────┬────┘
│
▼
┌─────────┐
│ PHP │
│ ShopXO │
└────┬────┘
│
▼
┌─────────┐
│ MySQL │
└─────────┘
Docker Compose 可以采用:
services:
php:
build:
context: .
dockerfile: docker/php/Dockerfile
restart: unless-stopped
volumes:
- ./shopxo:/var/www/html
depends_on:
- mysql
nginx:
image: nginx:alpine
restart: unless-stopped
ports:
- "8080:80"
volumes:
- ./shopxo:/var/www/html:ro
- ./docker/nginx/default.conf:/etc/nginx/conf.d/default.conf:ro
depends_on:
- php
mysql:
image: mysql:8.0
restart: unless-stopped
environment:
MYSQL_DATABASE: shopxo
MYSQL_USER: shopxo
MYSQL_PASSWORD: change-me
MYSQL_ROOT_PASSWORD: change-root-me
volumes:
- mysql-data:/var/lib/mysql
volumes:
mysql-data:
需要特别注意:不要简单使用 php:8.2-apache 后把源码挂进去就认为可以生产运行。
ShopXO 基于 ThinkPHP 8,需要正确安装 PHP 扩展和 Composer 依赖,同时还需要处理 Web Root、Rewrite、上传目录、缓存目录等问题。
生产 Docker Image 应该自行构建:
PHP 8.2
│
├── pdo_mysql
├── mysqli
├── gd
├── mbstring
├── xml
├── zip
├── curl
└── opcache
再运行 Composer:
composer install --no-dev --optimize-autoloader
ShopXO 适合什么场景?
从产品能力来看,它比较适合:
| 场景 | 适合度 |
|---|---|
| 普通 B2C 商城 | ⭐⭐⭐⭐⭐ |
| 企业自营商城 | ⭐⭐⭐⭐⭐ |
| 多商户平台 | ⭐⭐⭐⭐⭐ |
| 多门店商城 | ⭐⭐⭐⭐⭐ |
| O2O | ⭐⭐⭐⭐ |
| 分销商城 | ⭐⭐⭐⭐⭐ |
| 社区商城 | ⭐⭐⭐⭐ |
| 进销存 + 商城 | ⭐⭐⭐⭐ |
| 快速搭建电商 MVP | ⭐⭐⭐⭐⭐ |
| 学习现代 PHP 架构 | ⭐⭐⭐ |
| 超大规模互联网电商 | ⭐⭐ |