A-A+
includes\cls_template.php on line 418错误
今天在测试 ecshop 系统时,又遇到了因版本而出现的问题,具体的问题代码如下所示:
Strict Standards: Only variables should be passed by reference in upload\includes\cls_template.php on line 418
ecshop 看来也该升级了,出现的诸多问题都是不兼容 php 高级版本所引起了,夏日博客分析了上面的代码,应该也和配置有关,我们看一下cls_template.php 的 418 行代码如下:
$tag_sel = array_shift(explode(' ', $tag));
我们把这一行代码修改拆分一下,如下所示:
$tag_arr = explode(' ', $tag); $tag_sel = array_shift($tag_arr);
因为 array_shift 的参数是引用传递的,5.3 版本以上的只能传递具体的变量,而不能通过函数返回值,所以就出现了上面的代码,修改后之后,问题解决。
另外一种方法,如果 ecshop 出现的错误兼容代码太多的话,可以直接进行屏蔽错误配置,在 PHP 配置文件 php.ini 中配置如下:
error_reporting = E_ALL | E_STRICT
如果没有配置 PHP.INI 的权限,也可以在 PHP 文件中直接写屏蔽语句,代码如下:
error_reporting(0);
这种方法只是把错误给屏蔽掉了,但实质错误还在,当我们觉得错误并不影响程序的正常运行时,就可以使用这种方法。