ecshop报错Strict Standards: Only variables should be passed by reference in cls_template.php的解决方法有的用户在使用ecshop程序时,遇到Strict Standards: Only variables should be passed by reference in upload\includes\cls_template.php on line 418这个报错,一般是由于ecshop程序不兼容高级版的php版本造成的。万维景盛工程师在这里为大家分享解决方法。 方案一:调整主机的php版本为php5.2。如果主机商的主机可以调整php版本,那么是最简单的解决方法。因为ecshop是在php5.2的环境下运行的,如果放在php5.3、php5.4等高版本环境中运行,就会遇到各种报错。 方案二:修改相关错误程序: 418行把这一句拆成两句就没有问题了 $tag_sel = array_shift(explode(' ', $tag)); 改成: $tag_arr = explode(' ', $tag); $tag_sel = array_shift($tag_arr); (实验过,绝对可行) 因为array_shift的参数是引用传递的,5.3以上默认只能传递具体的变量,而不能通过函数返回值 同理举一反三:遇到函数嵌套错误时可以分开写,错误自然解决
如: function get_dyna_libs($theme, $tmp) { $extsub = explode('.', $tmp); $ext = end($extsub); $tmp = basename($tmp,".$ext"); $sql = 'SELECT region, library, sort_order, id, number, type' . ' FROM ' . $GLOBALS['ecs']->table('template') . " WHERE theme = '$theme' AND filename = '" . $tmp . "' AND type > 0 AND remarks=''". ' ORDER BY region, library, sort_order'; $res = $GLOBALS['db']->getAll($sql); $dyna_libs = array(); foreach ($res AS $row) { $dyna_libs[$row['region']][$row['library']][] = array( 'id' => $row['id'], 'number' => $row['number'], 'type' => $row['type'] ); } return $dyna_libs; }
将$ext = end(explode('.', $tmp)); 改为 $extsub = explode('.', $tmp); $ext = end($extsub);
方案三:屏蔽错误
或则如果这样配置的话: error_reporting = E_ALL | E_STRICT php.ini中有如下设置: error_reporting = E_ALL | E_STRICT
这是说,显示那些不符合编码规范的警告(coding standards warnings)。 Joomla其实是建议取消error的输出,如果出于调试需要,应改为 error_reporting = E_ALL & ~E_NOTICE
问题得到解决。
|
>> 相关文章 |
关于我们
|
联系我们
|
付款方式
|
人才招聘
|
站长资讯
|
提交工单
Copyright© 2006-
值班客服QQ:
442956988
46472723
2920105656
热线电话:18610695105 售后技术支持:2920105656
1357089508
北京市大兴区宏业路9号院4号楼14层1405