Discuz X3.5 升级到 X5 完整实操记录

Discuz X3.5 升级到 X5 完整实操记录


写在前面

X3.5已经EOL,X3.5 到 X5 跨了两个大版本,中间没有官方一键升级路径。但经过实测,只要环境达标、备份到位,手动覆盖升级是可行的。以下是完整步骤,踩过的坑也一并记录。


一、检查 PHP / MySQL 版本是否达标

X5 最低要求:

组件 最低版本
PHP 7.4+(推荐 8.0+)
MySQL 5.7+(推荐 8.0+)
Apache/Nginx 正常即可

放一个测试探针

在网站根目录新建 check.php

php 复制代码
php<?php
echo "PHP 版本: " . phpversion() . "<br>";
echo "MySQL 版本: " . (function_exists('mysqli_get_client_info') ? mysqli_get_client_info() : '未检测到') . "<br>";
echo "PDO MySQL: " . (extension_loaded('pdo_mysql') ? '已加载 ✅' : '未加载 ❌') . "<br>";
echo "MBString: " . (extension_loaded('mbstring') ? '已加载 ✅' : '未加载 ❌') . "<br>";
echo "cURL: " . (extension_loaded('curl') ? '已加载 ✅' : '未加载 ❌') . "<br>";
echo "JSON: " . (extension_loaded('json') ? '已加载 ✅' : '未加载 ❌') . "<br>";
echo "<hr>";
echo "如果以上全部 ✅,可以继续升级。";
?>

访问 你的域名/check.php,全部通过再往下走。测完记得删掉这个文件。


二、备份 X3.5 数据库和网站文件

这步是保命操作,不要跳过。提供两种方法,选一个就行,建议两个都做

方法1:命令行备份(推荐,最快最稳)

bash 复制代码
bash# 备份数据库
mysqldump -u root -p --databases 你的数据库名 > db_backup_x35_$(date +%Y%m%d).sql

# 备份网站文件
tar -czf website_backup_x35_$(date +%Y%m%d).tar.gz /path/to/your/website/

两份备份分别存到不同位置,本地 + 异地各一份最稳。


方法2:用 Discuz 后台自带的备份功能(不需要 SSH 权限也能做)

适合没有命令行权限的虚拟主机用户。

操作路径

复制代码
后台 → 工具 → 备份 → 备份数据

具体步骤:

步骤 操作
1 登录 Discuz X3.5 后台
2 左侧菜单 → 工具备份
3 选择 备份数据(不要选备份文件,那个只备份文件不备份库)
4 勾选 全站数据
5 点击 开始备份
6 等待完成后,在 data/backup_ 目录下会生成一个 .sql 文件
7 把这个 .sql 文件下载到本地

注意

  • 后台备份只备份数据库,不会备份网站文件
  • 网站文件还是需要手动打包下载(FTP 下载根目录所有文件,或用主机面板的文件管理器打包)
  • 备份文件命名类似 backup_xxxxxxxx.sql,下载后重命名为 db_backup_x35_20260608.sql 方便识别

三、下载 Discuz X5 并替换文件

3.1 下载

官方地址:

https://www.discuz.net/downloads/

下载文件名类似:Discuz_X5.0_SC_UTF8.zip(以实际下载为准)

3.2 操作流程

bash 复制代码
bashcd /path/to/your/website/

# 1. 旧文件整体移走
mv . old35

# 2. 解压新包
unzip Discuz_X5.0_SC_UTF8.zip

# 3. 把 upload 目录移到根目录
mv upload/* .
mv upload/.* . 2>/dev/null; true

# 4. 拷贝配置文件(从旧站点复制过来)
cp old35/config/config_global.php ./config/
cp old35/config/config_ucenter.php ./config/

# 5. 加写权限
chmod 777 ./config/config_global.php
chmod 777 ./config/config_ucenter.php
chmod 777 ./data/
chmod 777 ./uc_server/data/

chmod 777 是为了让安装程序能写入配置。升级完成后记得改回 644600


四、执行升级:访问 /install.php

浏览器打开:你的域名/install.php

升级前必须做的两件事

⚠️ 旧版 X3.5 已经放在 old35 目录下,可以通过 你的域名/old35/ 访问旧版后台来执行关闭操作。

顺序 操作 路径 说明
关闭所有插件 旧版后台 → 应用 → 插件 → 全部关闭 插件不关闭,升级过程会报错或卡住
关闭整站访问 旧版后台 → 全局 → 关闭站点 → 选"仅管理员可访问" 防止升级中有用户发帖登录,导致数据不一致

具体怎么进旧版后台

复制代码
浏览器访问:你的域名/old35/admin.php
或
你的域名/old35/

登录后按上面表格操作即可。很多人找不到旧版后台在哪,记住路径是 /old35/

两个都关,缺一不可。只关站点没关插件,升级到一半照样报错。


五、升级完成后的收尾

5.1 开启插件(逐个开,不要批量)

复制代码
后台 → 应用 → 插件 → 逐个开启,观察是否报错

X5 的插件架构有变化,旧插件大概率不能直接用。先只开核心必要插件,其余等适配版。

5.2 恢复整站访问

复制代码
后台 → 全局 → 关闭站点 → 选择"开启"

5.3 权限收回去(安全必须做)

bash 复制代码
bashchmod 644 ./config/config_global.php
chmod 644 ./config/config_ucenter.php
chmod 755 ./data/
chmod 755 ./uc_server/data/

5.4 删除测试文件和安装目录

bash 复制代码
bashrm -f check.php
rm -rf install/
rm -rf old35/   # 确认一切正常后再删

关键提醒

事项 说明
不要跳过备份 升级失败回滚全靠它
check.php 测完就删 暴露环境信息,有安全风险
插件必须先关闭 不关插件直接升,大概率报错
整站关闭是必须的 不关就升,数据大概率出问题
旧版后台在 /old35/ 升级前从这里进去关插件和关站点
插件不要批量开 一个一个开,出问题好定位
777 权限升级完就改 长期 777 等着被入侵
后台备份只备份库不备份文件 文件还得另外手动下载

整个过程顺利的话,30 分钟内可以完成。如果中间报错,优先看 data/logs/ 下的日志文件,大部分问题都能在那里找到原因。

相关推荐
大势智慧7 天前
矿影安巡版|无人机自主巡检,AI识别隐患,筑牢矿山安全防线
人工智能·安全·无人机·升级·智慧矿山·空间智能·露天矿山
介一安全11 天前
【漏洞学习】Discuz! 高危设计缺陷深度剖析:Windows短文件名导致数据库泄露
discuz·安全性测试·案例·信息泄漏·短文件名
SimonLiu00911 天前
codex升级之后报错
升级·codex
datascome1 个月前
文章自动采集发布到Discuz网站技巧
经验分享·爬虫·数据采集·discuz·网站内容批量发布
丶伯爵式2 个月前
Ubuntu 24.04 更换国内软件源指南 | 2026年3月26日
linux·运维·ubuntu·国内源·升级
supersolon3 个月前
WSL2(Linux)升级docker
linux·运维·docker·wsl·升级
嵌入式×边缘AI:打怪升级日志4 个月前
嵌入式IAP升级完全指南:中控与传感器
硬件·升级·软件
Web极客码4 个月前
修复Discuz 迁移后页面全部变成“????”乱码的问题
数据库·mysql·discuz·mariadb
巴德鸟4 个月前
华为手机鸿蒙4回退到鸿蒙3到鸿蒙2再回退到EMUI11 最后关闭系统更新
华为·智能手机·harmonyos·降级·升级·回退·emui