这篇于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直接运行,发现是数据缺失的问题,可能是恢复数据时,超时中断了,以为执行完了。解决是:从备份中找出缺失的项,在本地恢复出一个完整的库,再用增量的办法补充到线上。
正好旧帖子不操作了,所以此处影响不大。如果是线上,恢复数据一定是个头大的事情。