使Emlog5.3.1 支持PHP7.0到PHP7.3的方法

Mr.Bai 974 浏览 1

使Emlog5.3.1 支持PHP7.0到PHP7.3的方法

周末闲着没事,给服务器下的所有网站升级了PHP7.3,以下方法是Emlog5.3.1支持PHP7.0到7.3版本的方法
Emlog直接安装在PHP7.0以上会直接报错,emlog5.3.1虽然已经使用mysqli连接类,但是为了兼容性还是使用了mysql。PHP7已经不支持mysql扩展了,但是支持mysqli和pdo_mysql。

以下方法是修改emlog的程序,无报错安装。已经安装好的直接修改程序即可,尽量做好文件备份。

修改include\lib\option.php

把
const DEFAULT_MYSQLCONN = 'mysql';
改为
const DEFAULT_MYSQLCONN = 'mysqli';

在/include/lib/cache.php

把
$$row['option_name'] = $row['option_value'];
改为
${$row['option_name']} = $row['option_value'];

很多主题和插件都使用了mysql连接类,还需要修改插件和主题中的数据库连接方式,不然直接报数据库错误。如果后台使用的不是默认模板的话也要按照以下方法改。

$DB = MySql::getInstance();
都要改为
$DB = Database::getInstance();

如果使用了默认后台主题需要按以下方法修改:

在admim/seo.php

$$t
改为
${$t}

在admim/views/admin_log.php

$$a
$$b
$$a
改为
${$a}
${$b}
${$a}

在admim/views/comment.php

$$a = "class=\"filter\"";
改为
${$a} = "class=\"filter\"";

以下方法按需求使用【没报错就不用管】

PHP版本更新的比较快可能autoload自动加载函数会报错,function.base.php开头的__autoload函数修改如下:

spl_autoload_register(function($class) {
	$class = strtolower($class);
	if (file_exists(EMLOG_ROOT . '/include/model/' . $class . '.php')) {
		require_once(EMLOG_ROOT . '/include/model/' . $class . '.php');
	} elseif (file_exists(EMLOG_ROOT . '/include/lib/' . $class . '.php')) {
		require_once(EMLOG_ROOT . '/include/lib/' . $class . '.php');
	} elseif (file_exists(EMLOG_ROOT . '/include/controller/' . $class . '.php')) {
		require_once(EMLOG_ROOT . '/include/controller/' . $class . '.php');
	} else {
		emMsg($class . '加载失败。');
	}
});

发表评论 取消回复
表情 图片 链接 代码

  1. Mr.Bai
    Mr.Bai 站长

    @推荐昵称:这个模板不错的

分享
请选择语言