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文件进行编辑,查找到以下代码:

替换为:

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

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

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

替换为:

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

 

ECSHOP提示Deprecated: preg_replace()报错的解决方法

在PHP5.5环境下运行的ECSHOP会提示

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in…….

这个错误。出现这个报错的原因是preg_replace()函数中用到的修饰符 /e 在 PHP5.5中已经被弃用了。如果你的PHP版本恰好是PHP5.5,那你的ECSHOP肯定会显示上面的错误提示。

preg_replace()错误的解决办法:

从那段错误提示信息中可以知道需要使用preg_replace_callback来代替preg_replace,使用编辑器(如:notepad++或editplus)打开文件 includes/cls_template.php ,找到

替换为

问题解决。

如果ECSHOP中其它页面也报类似的 preg_replace错误,也可用上面的通用方法解决。