码迷,mamicode.com
首页 > Web开发 > 详细

ECshop在PHP5.3以上版本错误处理

时间:2017-05-20 14:57:08      阅读:382      评论:0      收藏:0      [点我收藏+]

标签:ref   静态类   题解   eth   reference   php   odi   php5.5   and   

ecshop是一套开源的商城系统,由于出现较早,很多写法不支持较高版本的PHP,目前PHP5.2对ecshop的支持很少。

一般在高版本的PHP中,会出现一些问题,下面是一些在网上找到的答案,经过自己测试可用。

错误1、

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in E:\hx\wamp\www\weixin\includes\cls_template.php on line 300

1)、错误原因:
preg_replace() 函数中用到的修饰符 /e 在 PHP5.5.x 中已经被弃用了。

2)、解决办法:
其实从刚才的错误提示信息中我们也能看出一二它提示我们使用 preg_replace_callback 来代替 preg_replace
所以解决方法如下:

使用记事本或其他PHP编辑软件(如:editplus)打开文件 includes/cls_template.php 找到

return preg_replace("/{([^\}\{\n]*)}/e", "\$this->select(‘\\1‘);", $source);
替换为

return preg_replace_callback("/{([^\}\{\n]*)}/", function($r) { return $this->select($r[1]); }, $source);
问题解决。

错误2、

Strict standards: Only variables should be passed by reference in E:\hx\wamp\www\weixin\includes\cls_template.php on line 423

错误原因:PHP5.3以上默认只能传递具体的变量,而不能通过函数返回值传递,所以这段代码中的explode就得移出来重新赋值了

解决办法:将$tag_sel = array_shift(explode(‘ ‘, $tag));分开写成

$temp = explode(‘ ‘, $tag);
$tag_sel = array_shift($temp);

错误3:Strict standards: Non-static method cls_image::gd_version() should not be called statically in

错误原因:不是静态类中的方法

解决办法:将return cls_image::gd_version();修改为

$p = new cls_image();
return $p->gd_version();

ECshop在PHP5.3以上版本错误处理

标签:ref   静态类   题解   eth   reference   php   odi   php5.5   and   

原文地址:http://www.cnblogs.com/baidicheng/p/6882078.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!