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

[查看百度是否已收录此帖]

Discuz Discuz 531 人阅读 | 0 人回复

小仙 发表于 2021-1-17 23:41:16 | 显示全部楼层 |阅读模式

来源 https://www.xiaobaibk.com/xiao-bai-899.html
⼀、介绍
[backcolor=rgba(255, 255, 255, 0.68)]本程序为 Discuz! X3.4 转 Discuz! Q 程序,通过运⾏转换命令可以将 Discuz! X3.4 包括⽤户、版块、普
通主题、回复、附件图⽚等数据转换⾄ Discuz! Q,该程序脚本可以放到任意⽬录。在转换程序开始前,
请保证 Discuz! Q 数据库为全新安装,或者只通过本程序转换过数据。
⼆、环境要求
[backcolor=rgba(255, 255, 255, 0.68)]服务器环境要求为: PHP 7.2.5+
三、配置与使⽤
[backcolor=rgba(255, 255, 255, 0.68)]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_ 即可):
  1. ALTER TABLE `pre_users` ADD `salt` CHAR(6) NULL AFTER `password`;
  2. ALTER TABLE `pre_posts` CHANGE `content` `content` MEDIUMTEXT CHARACTER SET
  3. utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '内容';
复制代码
[backcolor=rgba(255, 255, 255, 0.68)]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⾏ 附近)
  1. if ($event->password !== '' && !$event->user->checkPassword($event->password))
  2. {
复制代码
[backcolor=rgba(255, 255, 255, 0.68)]前添加如下代码:
  1. $this->checkSaltPassword($event);
复制代码
[backcolor=rgba(255, 255, 255, 0.68)]在程序⽂件最后⼀个⼤括号}前,给本⽂件添加如下代码:
  1. /**
  2. * @param $event
  3. * Discuz! X3.4 密码转换
  4. */
  5. private function checkSaltPassword($event) {
  6. if (!empty($event->user->salt) && !empty($event->password)) {
  7. $passwordmd5 = preg_match('/^\w{32}$/', $event->password) ? $event-
  8. >password : md5($event->password);
  9. $passwordmd5 = md5($passwordmd5 . $event->user->salt);
  10. if ($event->user->password == $passwordmd5) {
  11. $event->user->password = $event->password;
  12. $event->user->salt = '';
  13. $event->user->save();
  14. }
  15. }
  16. }
复制代码
[backcolor=rgba(255, 255, 255, 0.68)]将转换程序⾥的⽂件 app/Formatter/CustomerConfigurator.php 复制到 Discuz! Q程序
app/Formatter⽬录下,并在 Discuz! Q 程序⽂件 app/Formatter/Formatter.php 中 38⾏ 左右找
到:
  1. parent::confTopic($configurator);
复制代码
[backcolor=rgba(255, 255, 255, 0.68)]在其后添加如下代码:
  1. CustomerConfigurator::Customer($configurator);
复制代码
[backcolor=rgba(255, 255, 255, 0.68)]删除 Discuz! Q 程序 storage/Formatter ⽬录下的所有缓存⽂件。
f).上传附件
[backcolor=rgba(255, 255, 255, 0.68)]将 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 命令
[backcolor=rgba(255, 255, 255, 0.68)]a).⼀键转换:
命令⾏模式下,在转换程序根⽬录运⾏ php discoa app:xtq 命令,将完成所有本程序定义过的数据的转
换,包含:⽤户数据、版块数据、主题数据、回复数据、附件数据、表情数据。
[backcolor=rgba(255, 255, 255, 0.68)]
仙杰笔记 Discuz! X3.4 怎么转 Discuz! Q 官方教程  Discuz 234015j4srgpsrpat15xpi
[backcolor=rgba(255, 255, 255, 0.68)]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 表示清理⽤户数据。
[backcolor=rgba(255, 255, 255, 0.68)]
仙杰笔记 Discuz! X3.4 怎么转 Discuz! Q 官方教程  Discuz 4 请点击此处下载

查看状态:已购买或有权限

您的用户组是:游客

售价:免费  | 提取码 bmqf  | 下载次数:5  
下载权限: 不限  (已享有下载权限 ) 以上或 VIP会员   [购买VIP]   [充值铜板]  [免费赚铜板]

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

H5手机支付、当面付、易支付、码支付、微信H5跳转支付网站支付api对接。通道搭建QQ 263029129

仙杰笔记站长微信号