1.1 X5.0 是什么:架构变化与选型建议
弄清 X5.0 到底改了哪几块,再决定你的站是升级还是新装。
1.1.1 一个装了二十年的社区系统
Discuz! 由康盛集团(Comsenz)出品,是中文互联网上存量最大的社区建站系统之一。所谓"社区系统",就是一套把用户注册、发帖回帖、版块管理、积分等级、私信这些功能打包好的现成程序——你不用从零写 PHP,只要有一台能跑 PHP 和 MySQL 的服务器就能上线。
它的强项一直是"论坛 + 门户"这个组合:论坛沉淀内容与人与人的关系,门户负责展示,两者共用一套用户体系、一套后台、一套权限模型。X5.0 之前的 X3 系列在这一点上从未变过,变的只是版本号。
1.1.2 版本号怎么读
当前开源版最新版本号形如 X5.0.4.Open/Intl Release 20261001,逐段拆开看:
| 片段 | 含义 | 站长要关心的事 |
|---|---|---|
X5.0 |
大版本号,代表内核体系 | 决定你的插件和模板要不要重做 |
4 |
迭代序号,小功能与修复累积 | 可以跟,也可以不跟 |
Open |
开源版;另有闭源授权的企飞版 X5.1 | 个人站选 Open,企业站可评估企飞版 |
Intl |
国际版(多语言 i18n 扩展) | 中文站可以忽略这个标识 |
Release 20261001 |
本次发布日 | 排期、备份窗口都按这个日子定 |
更新节奏是每月 1 日、10 日、20 日各发一期(官方称 Tri-Monthly),每三个月一次大更新;变更少的期次会跳过。对运维的意义是:不要攒到年底一次性升,磁盘上永远留一份可回滚的整站备份。
1.1.3 内核换成了 MitFrame
X5.0 最实在的变化是整个目录结构按 APP(Application,功能模块)重新归类,内核换成了全新的 MitFrame 框架体系:
source/
├── app/ X3.5 里 source/module 的活儿,按 APP 拆开
│ └── xxx/
│ ├── module/ 类文件
│ ├── child/ 子文件
│ └── template/ 模板文件(X5 只支持 .php 后缀模板)
├── child/ 全局子文件目录
├── class/ 核心类库 class_core.php、class_template.php
├── function/ 函数库 function_core.php
└── plugin/ 插件目录
data/
├── cache/ 模板缓存与数据缓存
└── plugindata/ 插件数据
template/default/ 默认模板套系(cell / cells / common / forum / portal / touch / i18n / style)
打一个比方:X3.5 像一栋按"楼层"隔断的楼——机房一层、库房二层、办公室三层;X5.0 改成按"部门"划分——市场部有自己的模块、模板和子文件,市场部要改自己的东西不用惊动别的部门。source/module/ 这个老目录在 X5 里已经并入 source/app/,include/ 则被子文件机制取代。
1.1.4 七个值得知道的核心变化
| 变化 | 说明 | 对站长的实际影响 |
|---|---|---|
| 目录按 APP 重新归类 | MitFrame 体系 | 改代码前先找对目录,别再翻 source/module |
| 子文件 child 机制 | 插件注册后可接管系统逻辑 | 扩展能力上台阶,是 X5 最强的扩展点 |
| 细胞模板 | {cell} 与 {cells} |
含 PHP 逻辑的片段封装起来,用户在后台 DIY 组合 |
| 模板变量机制 | 模板自带后台配置页 | 换颜色、改 logo 不必再配一个插件 |
| 组件插件化 | 对象存储、邮件发送改由插件接管 | 换 SMTP、换 OSS 变成装插件,不是改核心 |
| 原生手机版 DIY | touch 目录模板同样支持 DIY 区域 |
手机版页面也能让运营自己搭 |
| 页面组件导出 | 页面组件、模块组件可导入导出 | 好模板的布局能整套分享给别人用 |
1.1.5 child 机制值得多说两句
全局子文件放在 /source/child/,各 APP 的子文件放在 /source/app/xxx/child/。系统程序会自动引用对应模块的 child 文件;插件一旦注册接管,就可以完全代替原有系统逻辑。
这意味着什么?以前你改Discuz! 逻辑只能 fork 整个程序,改一处源码就再也升不了级。现在你可以让插件在指定环节接管、代理掉原逻辑,核心升级时只要插件跟上就行。对要长期维护的老站来说,这是从"改到不敢升级"变成"升级只改插件"的转折点。
1.1.6 细胞模板与模板变量
X5 新增的 {cell} 是最小封装单元,对应 template/{标识}/cell/ 下的文件(支持多级目录,扩展名固定 .htm);{cells} 再把多个 cell 封装一次,对应 template/{标识}/cells/ 目录。它的价值在于把带 PHP 逻辑的部分关起来,不让站长以外的任何人乱改,而组合权交给后台 DIY。系统内置了一批细胞模板,直接在 template/default 里搜 {cells 和 {cell 就能找全。
模板变量则完全复刻了插件变量机制:模板可以自带参数配置后台,不必再为改一个配色配一个插件。开启开发者模式后(config/config_global.php 末尾加 $_config['plugindeveloper'] = 1;),模板列表会出现"设计"按钮。
1.1.7 运行环境底线与一条红线
| 项 | 要求 |
|---|---|
| PHP | 开源版 PHP 8.0+;企飞版 X5.1 要求 PHP 8.2+ |
| 数据库 | MySQL 5.7~9、MariaDB 10.2+ |
| 跨版本 | X5.0 不再兼容 X3.5 及更早版本 |
环境到手先跑版本检查,比盲装完再报错省事:
php -v # 确认 PHP ≥ 8.0
mysql -V # 确认 MySQL/MariaDB 版本(大写 V)
这条红线要划重点:X5.0 不是 X3.5 的补丁式升级,老插件老模板需要改造。这也是下一节决策表里"老站"一栏要给足成本估算的原因。
1.1.8 X3.5 还是 X5.0:一张决策表
| 你的情况 | 建议 | 主要成本 | 不建议的做法 |
|---|---|---|---|
| X3.5 老站,插件少于 10 个,模板基本没改 | 升X5.0 | 插件逐个测试改造,通常 1~2 周 | 直接在生产站原地覆盖升级 |
| X3.5 老站插件多、且深度改过核心 | 先留在 X3.5,规划迁移 | 迁移等于重做,数据要单独导出校验 | 边升边改,出问题分不清是升级还是改动 |
| 全新个人站、博客型社区 | 直接 X5.0 | 几乎没有历史包袱 | 从 X3.5 起步再升级 |
| 中小型论坛,重视手机版 | X5.0 | 无 | 用 X3.5 模板硬套 X5 |
| 企业内网社区,需要统一账号体系 | X5.0 开源版起步,评估企飞版 X5.1 | 授权与二次开发 | 拿开源版当内网系统再自行魔改核心 |
| 需要 ES 全文搜索、原生队列、原生 AI | 评估企飞版 X5.1 | 闭源授权成本 | 自己在开源版上硬堆,升级时全废 |
选型只有一句话:新站直接上 X5.0,老站先算清插件改造量再决定。算不清就留在 X3.5,把 X5.0 当成并行跑一个新站来验证,验证通过再切流量。
