20201107 - 拯救 Discuz6

这篇于TA人无意义,仅自己记录。

因虚拟主机到期,故将原先bluehost的一个discuz6转到hostinger。

操作步骤是:

1、在后台将原数据用自带功能备份为sql,共生成了49个文件;并将原先所有文件打包下载到本地。

2、通过主机功能将数据库备份到本地;

3、将文件上传到新主机,并调整.htaccess文件

4、将数据库恢复到新主机。

此时,打开首页,出现很多问题,试了很多都没有发现原因:

1、乱码

2、无法登录

3、点击帖子无法查看内容

解决办法:

于是本地搭建一套php5.3的环境进行调试;

0、环境搭建绝对是有技术含量的,想到那些未参与和领导过软件项目,理论指导实际的学院派,公司招聘这类人时,面试应让他们搭建一套Web的运行时环境,PHP,Python,Js,Java,Go,.Net 都不限。能在一天内完成的,才能录用。

1、乱码的原因:原先是mysql,现在是mariadb,原先判断数据库版本的代码,并未兼容mariadb

    if($this->version() > '4.1') {
        global $charset, $dbcharset;
        if(!$dbcharset && in_array(strtolower($charset), array('gbk', 'big5', 'utf-8'))) {
            $dbcharset = str_replace('-', '', $charset);
        }

        if($dbcharset) {
            @mysql_query("SET character_set_connection=$dbcharset, character_set_results=$dbcharset, character_set_client=binary", $this->link);
        }

        if($this->version() > '5.0.1') {
            @mysql_query("SET sql_mode=''", $this->link);
        }
    }

这里可根据使用的数据库版本直接将版本判断的代码注释掉,即可解决乱码问题。

2、无法登录的问题

原先因为垃圾注册和尝试登录,开启了验证码。又按论坛提示,配置了密码提示问题。

开始无法登录时,改了一处代码 == 改为了 !== 直接登录,忘了改回去,导致此处无法真正登录,总在输入验证码处循环。

L:hack代码时,要记得特殊标记备注。操作完后要记得全局搜索标记,改回原代码。

if($member['discuz_secques'] == $secques && !$seccodemiss) {
}

3、点击帖子无法查看内容

这里debug拿出sql直接运行,发现是数据缺失的问题,可能是恢复数据时,超时中断了,以为执行完了。解决是:从备份中找出缺失的项,在本地恢复出一个完整的库,再用增量的办法补充到线上。

正好旧帖子不操作了,所以此处影响不大。如果是线上,恢复数据一定是个头大的事情。

posted on 2020-11-07 03:22  Eric Lee  阅读(86)  评论(0编辑  收藏  举报

导航