ECShop出现Strict Standards: Only variables should be passed by reference in的解决方法

今天开始研究ECShop,在安装完成的时候发现首页顶部、左侧和底部出现:

Strict Standards: Only variables should be passed by reference in F:\home\musesea\www\shop\includes\cls_template.php on line 418

的报错信息。

第一种解决方法是杀到cls_template.php文件中发现下面这段代码:

?
1
$tag_sel = array_shift(explode(' ', $tag));

忘记说了,我的PHP版本是5.4.19,PHP5.3以上默认只能传递具体的变量,而不能通过函数返回值传递,所以这段代码中的explode就得移出来重新赋值了:

?
1
2
$tagArr = explode(' ', $tag);
$tag_sel = array_shift($tagArr);

这样之后顶部的报错没掉了,左侧和底部的报错还需要去ecshop的后台点击清除缓存才能去除。

第二种解决方法就是去php.ini里面修改error_reporting,改成error_reporting=E_ALL & ~E_STRICT,这个意思是显示所有除了严格模式的错误。

改完了之后需要到 ecshop\upload\includes\init.php中,将第45行的:

?
1
@ini_set('display_errors',        1);

改成:

?
1
@ini_set('display_errors',        0);

这样ecshop\upload\includes\cls_template.php中的代码可以不用改,而且程序可以正确运行,缓存记得去后台清除下。

上面两种方法,我觉得第一种方法比较好,治标要治本,第二种方法有点像是hack过去,而且错误输出关闭对开发本身一件不好的事情,不过如果你在开发环境开启了所有的报错,正式环境关闭所有的报错这样也是没有什么问题的。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值