Discuz! x3.2、3.4,PHP7.2安裝 Discuz后报错原因与解决方法

admin 其他CMS教程 0

新主机安装discuz3.2/3.4后打开网站首页,在最顶部报错误如下

Deprecated: __autoload() is deprecated, use spl_autoload_register() instead in /storage/sdcard0/htdocs/DiscuzX/upload/source/class/class_core.php on line 27

原因解析

自PHP 7.2.0起__autoload()已被弃用。 非常不鼓励依赖此功能。

请使用spl_autoload_register($callable)来替代__autoload()自动加载函数。其中参数$callable是一个自定义函数。自定义函数的参数为需要加载的类。其他用法和使用__autoload()自动加载函数一样。

spl_autoload_register()可以注册多个自动加载函数,而使用自动加载函数__autoload()自动加载类时只能写一个__autoload()函数。

Discuz!使用传统的__autoload()来自动加载类文件,在PHP 7.2中运行需要改为spl_autoload_register()。

解决方法如下

找到文件sourceclassclass_core.php,用文件编辑软件打开,搜索到以下代码:

if(function_exists('spl_autoload_register')) {
spl_autoload_register(array('core', 'autoload'));
} else {
function __autoload($class) {
return core::autoload($class);
}
}

将由}后else开始部分删除,代码变为

if(function_exists('spl_autoload_register')) {
spl_autoload_register(array('core', 'autoload'));
}

免责声明

本站提供的一切软件、教程和内容信息仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑或手机中彻底删除上述内容。如果您喜欢该程序,请支持正版,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。敬请谅解!

您需要 登录账户 后才能发表评论

欢迎 你 发表评论: