discuz选择'仅安装Discuz'安装过程卡死问题解决

作者:腾睿互动时间:2013-06-25点击:504

最近因为项目需要开发一个社区系统,因为之前的项目用的是ucenter,刚好可以和discuz整合,所以决定用discuz来改。

从他们官网上下载了3.0最新版,开始安装,前面检测环境什么的都没有问题,因为原项目已经有ucenter,所以选择的'仅安装Discuz',点击下一步,然后安装过程就卡死不动,无法完成安装。安装日志停在'正在安装附加数据......成功'这里。试了很多次,都是这样,如果选择全新安装,则可以成功。我试了全新安装,然后修改ucenter接口文件,但是因为管理员数据没不一样,虽然改了可以正常和原来的ucenter通信,但是安装的论坛超级管理员就没办法使用。最后无耐我开始看ucenter的安装程序,发现安装程序卡住的位置是/install/index.php的第396行,

        if($testdata) {
            install_testdata($username, $uid);
        }

再去看这个函数,他在/install/include/install_function.php的1306行

function install_testdata($username, $uid) {
    global $_G, $db, $tablepre;
    showjsmessage(lang('install_test_data')." ... ".lang('succeed'));

    $sqlfile = ROOT_PATH.'./install/data/common_district_{#id}.sql';
    for($i = 1; $i < 4; $i++) {
        $sqlfileid = str_replace('{#id}', $i, $sqlfile);
        if(file_exists($sqlfileid)) {
            $sql = file_get_contents($sqlfileid);
            $sql = str_replace("\r\n", "\n", $sql);
            runquery($sql);
        }
    }
}

其中的showjsmessage(lang('install_test_data')." ... ".lang('succeed'));就是前台安装日志显示,看到没有,他大爷的,进来就显示成功,安装程序卡住的位置就在这里,下面的那一段代码的作用是导入`您设置的前缀common_district`这个表的数据,这个表是个地区表,再看 runquery这个方法,他把传入的sql进行处理再执行,小弟才疏学浅,没有看到其中对pre_的转换,应该问题就是出在这里,写入数据失败,然后程序卡死。因为时间不多,没有去看具体的问题出在哪里,我的处理办法是注释掉/install/index.php中396行

        if($testdata) {
            //install_testdata($username, $uid);
        }
不让程序执行这一步,于是,改了安装程序之后,重新执行安装,一切就都OK了,安装成功。

最后,打开/install/data/打开里面的common_district_1.sql,common_district_2.sql,common_district_3.sql文件,将里面的pre_批量替换成你设置的表前缀,然后把语句复制到你安装的discuz数据库,执行,OK,数据也导入了。

您可能感兴趣

热点信息

403603683@qq.com

18980626172

404652714