新主機(jī)安裝discuz3.2/3.4后打開網(wǎng)站首頁,在最頂部報(bào)錯(cuò)誤如下
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()已被棄用。 非常不鼓勵(lì)依賴此功能。
請使用spl_autoload_register($callable)來替代__autoload()自動加載函數(shù)。其中參數(shù)$callable是一個(gè)自定義函數(shù)。自定義函數(shù)的參數(shù)為需要加載的類。其他用法和使用__autoload()自動加載函數(shù)一樣。
spl_autoload_register()可以注冊多個(gè)自動加載函數(shù),而使用自動加載函數(shù)__autoload()自動加載類時(shí)只能寫一個(gè)__autoload()函數(shù)。
Discuz!使用傳統(tǒng)的__autoload()來自動加載類文件,在PHP 7.2中運(yùn)行需要改為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開始部分刪除,代碼變?yōu)?/p>
if(function_exists('spl_autoload_register')) { spl_autoload_register(array('core', 'autoload')); }