Discuz! x3.2、3.4,PHP7.2安裝 Discuz后报错原因与解决方法!
<br /><br />新主机安装discuz3.2/3.4后打开网站首页,在最顶部报错误如下<br /><br /><ol><li>Deprecated: __autoload() is deprecated, use spl_autoload_register() instead in /storage/sdcard0/htdocs/DiscuzX/upload/source/class/class_core.php on line 27</ol><br /><br /><strong>原因解析</strong><br /><br />自PHP 7.2.0起__autoload()已被弃用。 非常不鼓励依赖此功能。<br /><br />请使用spl_autoload_register($callable)来替代__autoload()自动加载函数。其中参数$callable是一个自定义函数。自定义函数的参数为需要加载的类。其他用法和使用__autoload()自动加载函数一样。<br /><br />spl_autoload_register()可以注册多个自动加载函数,而使用自动加载函数__autoload()自动加载类时只能写一个__autoload()函数。<br /><br />Discuz!使用传统的__autoload()来自动加载类文件,在PHP 7.2中运行需要改为spl_autoload_register()。<br /><br /><strong>解决方法如下</strong><br /><br />找到文件source\class\class_core.php,用文件编辑软件打开,搜索到以下代码:<br /><br /><ol><li>if(function_exists('spl_autoload_register')) {<br /><li>spl_autoload_register(array('core', 'autoload'));<br /><li>} else {<br /><li>function __autoload($class) {<br /><li>return core::autoload($class);<br /><li>}<br /><li>}</ol><br /><br />将由<font style="background-color:rgb(247, 247, 247)">}</font>后else开始部分删除,代码变为<br /><br /><ol><li>if(function_exists('spl_autoload_register')) {<br /><li>spl_autoload_register(array('core', 'autoload'));<br /><li>}<br /><li></ol>Discuz<em>, </em>本帖<em>, </em>最后<em>, </em>allthebest<em>, </em>2019 if(function_exists('spl_autoload_register')) {<br />spl_autoload_register(array('core', 'autoload'));<br />}<br />应变成这样才对呀。
頁:
[1]