在PHP5.3以上版本运行ecshop和ecmall出现的问题及解决方案 |
|
|
ecshop 问题一:商城首页报错 Strict Standards: Only variables should be passed by reference in D:\wamp\ecshop\includes\cls_template.php on line 422 解决方法: 找到提示错误的文件 cls_template.php 及行号 把 $tag_sel = array_shift(explode(' ', $tag)); 改成: 并且删除 D:\wamp\www\ecshop\temp\caches下所有的文件 问题二:后台首页报错 Strict Standards: Non-static method cls_image::gd_version() should not be called statically in D:\wamp\www\ecshop\includes\lib_base.php on line 346 解决办法 找到D:\wamp\www\ecshop\includes\cls_image.php文件 搜索 function gd_version 改成 static function gd_version 问题三:后台-商店设置 Strict Standards: mktime(): You should be using the time() function instead in D:\wamp\www\ecshop\admin\sms_url.php on line 31 解决办法 根据错误提示 把 mktime() 改成 time()
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ecmall 问题描述:打开商城首页及后台出现乱码及以下一系列的错误信息 Strict Standards: Non-static method ECMall::startup() should not be called statically in D:\wamp\www\ecmall\index.php on line 22 Strict Standards: Non-static method Conf::get() should not be called statically, assuming $this from incompatible context inD:\wamp\www\ecmall\app\frontend.base.phpon line 446 解决办法 到ecmall安装目录下 找到 ecmall/eccore/ecmall.php 把 function get( 改成 static function get( 把 function startup( 给成 static function startup( 到php安装目录下找到php.ini 把 error_reporting = E_ALL 改成 error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT 重启服务 |
Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in C:\WWW\eccore\view\template.php on line 1402
$pattern = array(
'/<!--[^>|\n]*?({.+?})[^<|{|\n]*?-->/', // 替换smarty注释
'/<!--[^<|>|{|\n]*?-->/', // 替换不换行的html注释
'/(href=["|\'])\.\.\/(.*?)(["|\'])/i', // 替换相对链接
'/((?:background|src)\s*=\s*["|\'])(?:\.\/|\.\.\/)?(images\/.*?["|\'])/is', // 在images前加上 $tmp_dir
'/((?:background|background-image):\s*?url\()(?:\.\/|\.\.\/)?(images\/)/is', // 在images前加上 $tmp_dir
'/{nocache}(.+?){\/nocache}/ise', //无缓存模块
);
去掉后面的e
Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in C:\WWW\eccore\view\template.php on line 801
// $fields = preg_replace('/([a-zA-Z0-9_]+)\.([a-zA-Z0-9_*]+)/e', "\$this->_getFieldTable('\\1') . '.\\2'", $fields);
return preg_replace_callback("/{([a-zA-Z0-9_]+)\.([a-zA-Z0-9_*]+)}/", function($r) { return $this->_getFieldTable($r[1]); }, $fields);
Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in C:\WWW\eccore\view\template.php on line 357
// return preg_replace("/{([^\}\{\n]*)}/e", "\$this->select('\\1');", $source);
return preg_replace_callback("/{([^\}\{\n]*)}/", function($r) { return $this->select($r[1]); }, $source);