所在位置:首页 → 异常解决 → php 出现Strict Standards: Only variables should be passed by reference in的解决方法

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

发布: 更新时间:2022-10-25 13:59:21

问题背景

今天安装ecshop的时候最上面出现了一个错误提示:Strict Standards: Only variables should be passed by reference in F:\www.xxxx.com\cls_template.php on line 418

原因分析

这个问题多半是因为引用传递参数引起的

方法一:修改代码不使用引用传递;(推荐)

方法二:修改php配置文件,修改error_reporting 其值改为error_reporting = E_ALL& ~E_NOTICE。(不推荐

ps:修改配置文件时,最好是复制一行,注掉,然后再改,如果需要随时切回。

解决办法

打开cls_template.php文件中发现下面这段代码:

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

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

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

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

注意:我们安装程序是最好是严格按照程序要求的环境来搭建,如果实在不行也要尽量选择最接近的版本,不然差异太多,就不是修改一两处那么简单的问题了!

另外:下面我们遇到这段代码,在php5.3以上版本,也会报错误。

$file_suffix = strtolower(array_pop(explode('.', $file_name)));

修改方法:

$fnarray=explode('.', $file_name);
$file_suffix = strtolower(array_pop($fnarray));

这样大家就了解了吧,以后传参需要单独写好,不能一行写完了。

标签:, ,
文章排行