ecshop适应在PHP7的修改方法解决报错的实现 联系客服

发布时间 : 星期六 文章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) {