返回列表 发帖
查看: 8226|回复: 1

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

83

主题

2795

回帖

3564

积分

功行圆满

贡献
22 点
金币
351 个
发表于 2019-7-24 04:19:34 | 显示全部楼层 |阅读模式


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

  1. 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. }
复制代码
回复

使用道具 举报

1

主题

2

回帖

6

积分

初学乍练

贡献
0 点
金币
3 个
发表于 2019-9-10 20:54:21 | 显示全部楼层
if(function_exists('spl_autoload_register')) {
spl_autoload_register(array('core', 'autoload'));
}
应变成这样才对呀。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 关注公众号
  • 有偿服务微信
  • 有偿服务QQ

手机版|小黑屋|Discuz! 官方交流社区 ( 皖ICP备16010102号 |皖公网安备34010302002376号 )|网站地图|star

GMT+8, 2024-3-30 00:02 , Processed in 0.046146 second(s), 17 queries , Redis On.

Powered by Discuz! W1.0 Licensed

Cpoyright © 2001-2024 Discuz! Team.

关灯 快速发帖
有偿服务QQ
有偿服务微信
返回顶部
快速回复 返回顶部 返回列表