当前位置:首页 > 经验杂谈 > 信息技术

Discuz X5.0通过连接已有UCenter方式安装时出现白屏或500的解决方法

admin3周前 (08-29)信息技术41

问题描述

当在Discuz X5.0的过程中,通过连接已有UCenter方式安装时出现白屏,响应码为500,响应体为空。

问题原因

由于无法输出任何错误信息,查看log文件也是一无所获,因此通过注册一个结束时函数来在注释中输出错误信息。

register_shutdown_function(function() {
    $e = error_get_last();
    if($e && in_array($e['type'], [E_ERROR, E_PARSE, E_CORE_ERROR, E_COMPILE_ERROR])) {
        echo "\n<!--FATAL: {$e['message']} @ {$e['file']}:{$e['line']}-->\n";
    }
});

通过上述手法,我们获取到了实际上的错误信息。

<!--FATAL: Uncaught Error: Call to undefined function censor() in /www/wwwroot/bbs.****.com/source/class/uc/client.php:403
Stack trace:
#0 /www/wwwroot/bbs.****.com/install/include/install_function.php(1657): uc_user_register()
#1 /www/wwwroot/bbs.****.com/install/include/install_run_install.php(321): check_adminuser()
#2 /www/wwwroot/bbs.****.com/install/index.php(52): require('...')
#3 {main}
  thrown @ /www/wwwroot/bbs.****.com/source/class/uc/client.php:403-->

censor()是Discuz中用于敏感词屏蔽的关键函数,但是在Discuz的安装过程中,由于安装流程调用了基于核心框架存在的UCenter客户端代码,但安装过程并不会引入Discuz框架,而UCenter客户端又没有对无框架的调用进行兼容,于是引发了致命错误。

临时缓解措施

找到/source/class/uc/client.php文件,将:

if($censor)

批量替换为:

if($censor && function_exists('censor'))


扫描二维码推送至手机访问。

版权声明:本文由网络搭建经验谈发布,如需转载请注明出处。


本文链接:https://www.netlab.ac.cn/post/11.html

分享给朋友:

相关文章

如何在银河麒麟系统上添加富士施乐 DocuPrint P355d等未适配打印机

问题描述某单位进行国产系统改造,将原本的操作系统更改为银河麒麟系统,但发现富士施乐官网没有提供P355d的Linux驱动程序,在添加打印机时也无法自动匹配驱动,导致原有的打印机无法使用。解决方法对于黑…

在永中简报多合一打印(讲义打印)时删除右上角日期的方法

在永中简报多合一打印(讲义打印)时删除右上角日期的方法

问题描述使用永中Office中的永中简报进行多合一打印(讲义打印)时,右上角显示日期,不知道如何关闭。如图所示。解决方法在“视图”处找到并点击“讲义母版”。…