周末闲着没事,给服务器下的所有网站升级了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 . '加载失败。'); } });
本文作者为Mr.Bai,转载请注明。
@推荐昵称:这个模板不错的