发布时间 : 星期六 文章ecshop适应在PHP7的修改方法解决报错的实现更新完毕开始阅读0a0d7fd6d4bbfd0a79563c1ec5da50e2524dd1b0
ecshop适应在PHP7的修改方法解决报错的实现
下面小编就为大家带来一篇ecshop适应在PHP7的修改方法解决报错的实现。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
ecshop这个系统,到目前也没见怎么推出新版本,如果是新项目,不太建议使用它。不过,因为我一直以来都在使用中,所以不得不更改让其适应PHP新版本。现在PHP 7已经出发行版了,所以更改来继续使用吧。具体的更改有以下方面:
(1)将mysql扩展的使用替换掉,改为使用mysqli或pdo:
从php5.5开始,mysql扩展将废弃了。
具体更改的文件在于includes/cls_mysql.php。这是个不小的工程,文件代码太长……
if (!defined('DITAN_ECS')) {
die('Hacking attempt'); }
class cls_mysql {
var $link_id = NULL;
var $settings = array();
var $queryCount = 0; var $queryTime = ''; var $queryLog = array();
var $max_cache_time = 300; // 最大的缓存时间,以秒为单位
var $cache_data_dir = 'temp/query_caches/'; var $root_path = '';
var $error_message = array(); var $platform = ''; var $version = ''; var $dbhash = ''; var $starttime = 0; var $timeline = 0; var $timezone = 0; // 事务指令数
protected $transTimes = 0;
var $mysql_config_cache_file_time = 0;
var $mysql_disable_cache_tables = array(); // 不允许被缓存的表,遇到将不会进行缓存
function __construct($dbhost, $dbuser, $dbpw, $dbname = '', $charset = 'gbk', $pconnect = 0, $quiet = 0) {
$this->cls_mysql($dbhost, $dbuser, $dbpw, $dbname, $charset, $pconnect, $quiet); }
function cls_mysql($dbhost, $dbuser, $dbpw, $dbname = '', $charset = 'gbk', $pconnect = 0, $quiet = 0) {
if (defined('EC_CHARSET')) {
$charset = strtolower(str_replace('-', '', EC_CHARSET)); }
if (defined('ROOT_PATH') && !$this->root_path) {
$this->root_path = ROOT_PATH; }
if ($quiet) {
$this->connect($dbhost, $dbuser, $dbpw, $dbname, $charset, $pconnect, $quiet); } else {
$this->settings = array(
'dbhost' => $dbhost, 'dbuser' => $dbuser, 'dbpw' => $dbpw, 'dbname' => $dbname, 'charset' => $charset, 'pconnect' => $pconnect ); } }
function connect($dbhost, $dbuser, $dbpw, $dbname = '', $charset = 'utf8', $pconnect = 0, $quiet = 0) {
if ($pconnect) {
$this->link_id = new mysqli('p:'.$dbhost, $dbuser, $dbpw); if ($this->link_id->connect_error)
{
if (!$quiet) {
$this->ErrorMsg(\ }
return false; } } else {
$this->link_id = new mysqli($dbhost, $dbuser, $dbpw);
if ($this->link_id->connect_error) {
if (!$quiet) {
$this->ErrorMsg(\ }
return false; } }
$this->dbhash = md5($this->root_path . $dbhost . $dbuser . $dbpw . $dbname); $this->version = $this->link_id->server_version;
/* 对字符集进行初始化 */ $this->link_id->set_charset($charset);
$this->link_id->query(\
$sqlcache_config_file = $this->root_path . $this->cache_data_dir . 'sqlcache_config_file_' . $this->dbhash . '.php';
@include($sqlcache_config_file);
$this->starttime = time();
if ($this->max_cache_time && $this->starttime > $this->mysql_config_cache_file_time + $this->max_cache_time) {
if ($dbhost != '.') {
$result = $this->link_id->query(\ $row = $result->fetch_array(MYSQLI_ASSOC); $result->free();
if (!empty($row['Value']{1}) && $row['Value']{1} == ':' && !empty($row['Value']{2}) && $row['Value']{2} == \ {
$this->platform = 'WINDOWS'; } else {
$this->platform = 'OTHER'; } } else {
$this->platform = 'WINDOWS'; }
if ($this->platform == 'OTHER' &&
($dbhost != '.' && strtolower($dbhost) != 'localhost:3306' && $dbhost != '127.0.0.1:3306') || date_default_timezone_get() == 'UTC') {
$result = $this->link_id->query(\UNIX_TIMESTAMP() AS timeline, UNIX_TIMESTAMP('\. date('Y-m-d H:i:s', $this->starttime) . \
$row = $result->fetch_array(MYSQLI_ASSOC); $result->free();
if ($dbhost != '.' && strtolower($dbhost) != 'localhost:3306' && $dbhost != '127.0.0.1:3306') {
$this->timeline = $this->starttime - $row['timeline']; }
if (date_default_timezone_get() == 'UTC') {
$this->timezone = $this->starttime - $row['timezone']; } }
$content = '<' . \
'$this->mysql_config_cache_file_time = ' . $this->starttime . \ '$this->timeline = ' . $this->timeline . \ '$this->timezone = ' . $this->timezone . \ '$this->platform = ' . \
@file_put_contents($sqlcache_config_file, $content); }
/* 选择数据库 */ if ($dbname) {