乐云主机笔记

  • 首页
  • 主机优惠
  • 学习记录
  • 新手教程
  • 自用主机
  • 资源下载
  • 网赚项目
  • 其他
  • pingtest

  1. 首页
  2. 学习记录
  3. 正文

解决DIScuz安装后报Deprecated: __autoload() is deprecated, use spl_autoload_register() instead in */class_core.php错误

2019年2月10日 4222点热度 2人点赞 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

解决方法如下

找到文件source\class\class_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'));

}

原因解析

其实这个if判断也是没有必要的,因为从PHP 5.1开始就已经支持spl_autoload_register()了

PHP 7.2开始不主张使用function __autoload(){}来自动加载类文件。
__autoload() been DEPRECATED as of PHP 7.2.0. Relying on this feature is highly discouraged.
请使用spl_autoload_register($callable)来替代__autoload()自动加载函数。其中参数$callable是一个自定义函数。自定义函数的参数为需要加载的类。其他用法和使用__autoload()自动加载函数一样。
spl_autoload_register()可以注册多个自动加载函数,而使用自动加载函数__autoload()自动加载类时只能写一个__autoload()函数。
Discuz!使用传统的__autoload()来自动加载类文件,在PHP 7.2中运行需要改为spl_autoload_register()。

标签: 暂无
最后更新:2019年2月10日

letvps

这个人很懒,什么都没留下

打赏 点赞
< 上一篇
下一篇 >

文章评论

razz evil exclaim smile redface biggrin eek confused idea lol mad twisted rolleyes wink cool arrow neutral cry mrgreen drooling persevering
取消回复

分类
  • 主机优惠
  • 其他
  • 域名优惠
  • 学习记录
  • 新手教程
  • 网赚项目
  • 脚本源码
  • 自用主机
  • 资源下载
书签
  • AdvinServers.com
  • 猫云云计算

COPYRIGHT © 2021 Letcloud.cn. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang

粤ICP备15031609号-3