Discuz! X3.4 转 Discuz! Q 官方教程

Mr.Bai 4,086 浏览 1

⼀、介绍

本程序为 Discuz! X3.4 转 Discuz! Q 程序,通过运⾏转换命令可以将 Discuz! X3.4 包括⽤户、版块、普
通主题、回复、附件图⽚等数据转换⾄ Discuz! Q,该程序脚本可以放到任意⽬录。在转换程序开始前,
请保证 Discuz! Q 数据库为全新安装,或者只通过本程序转换过数据。

⼆、环境要求

服务器环境要求为: PHP 7.2.5+

三、配置与使⽤

1、配置
a).数据库链接参数修改
config/database.php ⽂件中配置好数据库, 其中 discuzq 为 Discuz! Q 数据库连接信息, discuzx
为 Discuz! X3.4数据库连接信息。
注:若Discuz! X3.4为 gbk 编码,数据库连接信息中的 X数据编码 和 X数据库字符集 保持现有默认配置
即可。
b).测试数据库连接
打开命令⾏窗⼝,在程序根⽬录运⾏ php discoa app:test 命令测试数据库能否正常连接。
c).运⾏ SQL
在 Discuz! Q 数据库运⾏ sql (注意修改表格前缀,如果没有前缀,去掉 pre_ 即可):

ALTER TABLE `pre_users` ADD `salt` CHAR(6) NULL AFTER `password`;
ALTER TABLE `pre_posts` CHANGE `content` `content` MEDIUMTEXT CHARACTER SET
utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '内容';

d).转换模式选择
转换模式配置,打开 config/config.php ⽂件,配置 “breakpoint_continuation” 。
当breakpoint_continuation的值为 true 时,表示开启断点续转模式,在此模式下执⾏转换命令,
程序会忽略之前转换过的数据;
当breakpoint_continuation的值为 false 时,程序会先检查Q⽬标表是否有多余数据,如果有则停
⽌执⾏对应的转换任务;
ALTER TABLE `pre_users` ADD `salt` CHAR(6) NULL AFTER `password`;
ALTER TABLE `pre_posts` CHANGE `content` `content` MEDIUMTEXT CHARACTER SET
utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '内容';
e).修改 Discuz! Q ⽂件
更新 Discuz! Q 登陆验证⽂件(后期每次Discuz! Q 升级后都需要⼿动添加)。找到 Discuz! Q 程序
⽂件 app/Listeners/User/CheckLogin.php (72⾏ 附近)

if ($event->password !== '' && !$event->user->checkPassword($event->password))
{

前添加如下代码:

$this->checkSaltPassword($event);

在程序⽂件最后⼀个⼤括号}前,给本⽂件添加如下代码:

/**
 * @param $event
 * Discuz! X3.4 密码转换
 */
private function checkSaltPassword($event) {
 if (!empty($event->user->salt) && !empty($event->password)) {
 $passwordmd5 = preg_match('/^\w{32}$/', $event->password) ? $event-
>password : md5($event->password);
 $passwordmd5 = md5($passwordmd5 . $event->user->salt);
 if ($event->user->password == $passwordmd5) {
 $event->user->password = $event->password;
 $event->user->salt = '';
 $event->user->save();
 }
 }
}

将转换程序⾥的⽂件 app/Formatter/CustomerConfigurator.php 复制到 Discuz! Q程序
app/Formatter⽬录下,并在 Discuz! Q 程序⽂件 app/Formatter/Formatter.php 中 38⾏ 左右找
到:

parent::confTopic($configurator);

在其后添加如下代码:

CustomerConfigurator::Customer($configurator);

删除 Discuz! Q 程序 storage/Formatter ⽬录下的所有缓存⽂件。

f).上传附件

将 Discuz! X3.4 ⽬录 uc_server/data/avatar 中的所有⽂件上传⾄ Discuz! Q ⽬录
storage/app/public/avatars,如果 avatars 不存在,请⾃⾏创建该⽬录。
将 Discuz! X3.4 ⽬录 data/attachment/forum 中的所有⽂件上传⾄ Discuz! Q ⽬录
storage/app/public/attachments,如果 attachments 不存在,请⾃⾏创建该⽬录。
将 Discuz! X3.4 ⽬录 data/attachment/commom ⽂件夹上传⾄ Discuz! Q ⽬录
storage/app/public/attachments。
将 Discuz! X3.4 ⽬录 static/image/smiley ⽂件夹中的⽂件夹上传⾄ Discuz! Q ⽬录 public/emoji
⽬录。

2、使⽤

Discuz! X3.4 转换 Discuz! Q 命令

a).⼀键转换:
命令⾏模式下,在转换程序根⽬录运⾏ php discoa app:xtq 命令,将完成所有本程序定义过的数据的转
换,包含:⽤户数据、版块数据、主题数据、回复数据、附件数据、表情数据。
Discuz! X3.4 转 Discuz! Q 官方教程
b).选择转换:
您可以⾃由选择要转换的数据。您可以使⽤ php discoa app:xtq --option 命令,⾃由选择您需要转换的
数据,--option 有以下可使的⽤参数:
user : ⽤户信息转换。
category : 版块信息转换。
thread : 主题信息转换。
post : 回复信息转换。
attachment : 附件信息转换。
emoji : 表情转换。
count :主题、帖⼦、⽤户信息统计更新。
例如:
php discoa app:xtq user 表示只转换⽤户信息。
php discoa app:xtq thread 表示只转换主题信息。
注意:
若采⽤选择转换,⽤户数据和版块信息⼀定要在主题、回复信息之前进⾏操作。
辅助命令
您可以使⽤ php discoa app:clean cleanDatabase --option 命令清理 Discuz! Q 中数据表数据。您可以
选择以下 --option 参数:
user : 清理⽤户数据。
userWallet : 清理⽤户钱包数据。
category : 清理板块。
thread : 清理主题。
post : 清理回帖。
emoji: 清理转换来的表情。
attachment : 清理附件数据。
不填写 option 参数时,程序将清理以上所有数据。
例如:
php discoa app:clean cleanDatabase 表示清理所有数据。
php discoa app:clean cleanDatabase user 表示清理⽤户数据。

转换程序xconvertq.zip

发表评论 取消回复
表情 图片 链接 代码

  1. 招投标
    招投标 Lv 1

    文章值得推荐 支持一下博主

分享
请选择语言