ecshop常见报错

1 篇文章 0 订阅
1 篇文章 0 订阅
ecshop在在PHP5.6.6版本以后,有了很多细微的变化。而ECSHOP官方更新又太慢,发现这些问题后也不及时升级,导致用户安装使用过程中错误百出。

整理一下我遇到的问题希望对你们能有些帮助也为了自己以后查看。

  • 问题1
    Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in cls_template.php XXX line
    出错原因:
    出现以上问题是 preg_replace() 函数中用到的修饰符 /e 在 PHP5.5.x 中已经被弃用了。在PHP 5.5以上的版本用 preg_replace_callback 函数替换了 preg_replace函数。
    解决方法:

    代码中使用 preg_replace 函数的部分全部替换成 preg_replace_callback 函数,并且将一被废弃的 /e 修饰符 删除

    示例:

    	//将文件中的下列代码
    	return preg_replace("/{([^\}\{\n]*)}/e", "\$this->sel ect('\\1');", $source); 
    	//替换为
    	return preg_replace_callback("/{([^\}\{\n]*)}/", function($r) { return $this->sel ect($r[1]); }, $source);
    
  • 问题2
    Strict Standards: Only variables should be passed by reference in \includes\cls_template.php on line 418
    出错原因:
    出现这个问题的原因,貌似在php5.4中array_shift只能为变量,不能是函数返回值。
    解决方法:

    //将文件中的下列代码
    $tag_sel = array_shift(explode(‘ ‘, $tag));
    //替换成
    $tag_arr = explode(‘ ‘, $tag);
    $tag_sel = array_shift($tag_arr);
    
  • 问题3
    Deprecated: Assigning the return value of new by reference is deprecated in…
    出错原因:
    PHP5.3+废除了”=&”符号,对象复制用”=”
    解决方法:

    搜索所有PHP文件,将”=&”替换为”=”

  • 问题4
    Strict Standards: mktime(): You should be using the time() function instead in …\admin\shop_config.php on line 32
    出错原因:
    这个错误提示的意思:mktime()方法不带参数被调用时,会被抛出一个报错提示
    解决方法:

    $auth = mktime();
    //将mktime替换成time();
    $auth = time();
    
  • 问题5
    Strict Standards: Redefining already defined constructor for class cls_sql_dump …
    出错原因:
    原因跟PHP类中的构造函数有关,PHP早期版本是使用跟类同名的函数作为构造函数,后来又出现了使用 __construct()作为构造函数, 这俩个函数可以同时存在。到了PHP5.4版本,对这俩个函数在代码中的先后顺序有了严格的要求。在PHP5.4版本下,必须__construct() 在前, 同名函数在后,否则就会出现上面的的错误提示。
    解决方法:

    把__construct()函数放在,同名函数上面就行了。

  • 问题6
    ECSHOP中transport.js和jquery的冲突问题
    出错原因:
    ecshop模板兼容jquery问题, 主要原因是 transprot.js 文件中, 大概 580行到590行之间,这个句用于格式化json,他重写了object的结构,导致于js框架冲突。冲突的原因是jquery给一个object增加了很多元素,那么在Object.prototype.toJSONString = function () 这个函数中 for (k in this) 语句中进行了无数次的循环,导致网页很卡,并且在IE中会报错。
    解决方法:

    在 page_header.lbi 库文件中加入如下代码,注意操作顺序:

    //1.先导入 transport.js文件
    	{insert_scripts files='transport.js,utils.js'}
    //2.然后导入您网站使用的jquery文件
    	<script language="javascript" src="您的jquery存放路径"></script>
    //3.之后加入代码
    	<script type="text/javascript">
    	$(function() {
    	window.__Object_toJSONString = Object.prototype.toJSONString;
    	delete Object.prototype.toJSONString;
    	});
    	</script>
    

这里附上ecshop的官方网站(http://www.68ecshop.com)

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值