迁移旧版 Discuz 论坛数据到新服务器且不丢失附件,核心在于完整备份数据库与 attachment 目录,并正确修改配置文件中的数据库连接信息。适用于整站迁移或更换服务器场景,风险边界在于文件权限设置错误可能导致附件无法写入或读取。
先说结论:Discuz 附件迁移依赖“数据库 + 文件”双重备份,单独迁移数据库会导致附件链接失效。
- 适合:整站搬迁、更换服务器 IP 或域名变更场景。
- 先准备:备份 MySQL 数据库文件、打包 attachment 目录、记录原数据库账号密码。
- 验收:随机打开帖子检查图片显示、查看附件链接域名是否指向新服务器。
快速处理思路
若不具备命令行操作条件,可遵循以下文件级处理逻辑:
- 使用 phpMyAdmin 导出全站 SQL 文件。
- 通过 FTP 或文件管理器打包下载整个网站根目录。
- 在新服务器创建数据库并导入 SQL 文件。
- 上传网站文件至新根目录,修改 config 配置文件。
- 将 attachment 及 data 目录权限设置为可写。
为什么会这样
Discuz 将附件的索引信息存在数据库,实体文件存在服务器磁盘。只迁移数据库会导致论坛能访问但图片破裂,只迁移文件则无法匹配帖子内容。必须保证数据库中的附件路径记录与新服务器文件存储位置一致,否则系统无法定位资源。
分步处理
按照以下顺序操作可降低数据丢失风险:
- 备份数据库:登录原服务器 phpMyAdmin,选择论坛数据库,点击“导出”生成 SQL 文件。若数据量大,建议使用 Navicat 直接复制数据库。
- 备份附件文件:打包下载网站根目录,重点保留 attachment、data、uc_server、config 目录。
- 上传至新环境:将文件上传至新服务器网站根目录,创建新 MySQL 数据库并导入 SQL 文件。
- 修改配置文件:编辑 config/config_global.php 和 config/config_ucenter.php,更新 dbhost(数据库地址)、dbuser(用户名)、dbpw(密码)、dbname(数据库名)。
- 修正文件权限:对新服务器的 data、attachment、forumdata 目录执行权限修改,确保 Web 服务用户有写入权限。
怎么验证是否生效
完成迁移后需通过以下动作确认附件可用性:
- 前台测试:随机打开含图片的旧帖子,确认图片能正常加载,无破裂图标。
- 源码检查:查看页面源代码中图片 src 属性,确认路径指向新服务器域名或 IP。
- 上传测试:尝试发布新帖并上传附件,确认新附件能成功写入并显示。
- 后台验证:登录后台“站点设置”→“上传设置”,确认远程附件配置状态正常。
常见坑
- 安装锁定文件:若重装过程受阻,检查并删除 data/install.lock 文件。
- 配置文件未更新:迁移后仍连旧库,通常因 config_global.php 未修改导致。
- 附件权限不足:新服务器附件目录权限若非可写状态,会导致新上传附件失败。
- 远程附件未同步:若原站启用远程附件,需使用后台“远程附件管理”工具同步本地到远程。
常见问题
远程附件怎么迁移?
若原站使用远程存储,需在后台配置新远程服务,并使用“远程附件管理”工具同步本地附件到远程服务器。
更换域名需要改什么?
需在后台“全局”→“站点信息”更新新域名,并进入 UCenter 设置更新应用域名和通信密钥。
数据库导入失败怎么办?
检查 php.ini 中 upload_max_filesize 限制,若 SQL 文件过大需修改配置或使用命令行导入。
参考来源
- Discuz 远程附件怎么迁移?附件搬家如何操作?
- Discuz! BBS(论坛) 迁移方法_discuz 迁移-CSDN 博客
- Discuz 网站搬家怎么操作?数据如何迁移?
- Discuz 正确的网站搬家教程