首页 » 开源CMS » ECShop » 正文

ECSHOP提示Strict Standards: Only variables should be passed by reference in报错的解决方法

保哥将之前在PHP5.3上安装的ECSHOP网站搬到PHP5.4的主机上时,发现首页顶部、左侧和底部出现:

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

的报错信息。原因是因为PHP5.3以上的版本默认只能传递具体的变量,而不能通过函数的返回值来传递,所以解决办法就是这段代码中的explode就要移出来重新进行赋值:

找到includes目录下的cls_template.php文件进行编辑,查找到以下代码:

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

替换为:

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

保存之后出错页面顶部的报错没掉了,左侧和底部如果还有报错还需要去ecshop的后台点击清除缓存才能去除。

另一种解决方法是修改php.ini的配置,把error_reporting参数改成

error_reporting=E_ALL & ~E_STRICT

这个意思是显示所有除了严格模式的错误,改完之后找到includes目录下的init.php文件进行编辑,查找到以下代码:

@ini_set('display_errors', 1);

替换为:

@ini_set('display_errors', 0);

然后在ECSHOP后台清除缓存。这样includes下的cls_template.php中的代码就可以不用改,而且程序可以正确运行。

 

发表评论