查看: 79|回覆: 0

[教程] Discuz! x 3.2-3.4,PHP7.2安裝Discuz后报错原因与解决方法!

[複製鏈接]

63

主題

383

回帖

0

積分

热心网友

金币
383
閲讀權限
220
精華
0
威望
0
贡献
0
在線時間
0 小時
註冊時間
2009-10-2
發表於 2020-9-26 00:24:36 | 顯示全部樓層 |閲讀模式
新主机安装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()。

解决方法如下

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

  1. if(function_exists('spl_autoload_register')) {

  2. spl_autoload_register(array('core', 'autoload'));

  3. } else {

  4. function __autoload($class) {

  5. return core::autoload($class);

  6. }

  7. }


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

  1. if(function_exists('spl_autoload_register')) {

  2. spl_autoload_register(array('core', 'autoload'));

  3. }




autoload, 加载, 函数, 自动, spl
回覆

使用道具 舉報

您需要登錄後才可以回帖 登錄 | 立即注册

本版積分規則

相关侵权、举报、投诉及建议等,请发 E-mail:qiongdian@foxmail.com

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部