万维景盛

万维景盛官网
  • 1***588 16:18:15 购买 卡密:BaCodeB
  • z***029 16:17:26 购买 卡密:BaCodeA
  • z***029 16:17:23 购买 卡密:BaCodeA
  • z***029 16:17:22 购买 卡密:BaCodeA
  • z***029 16:10:44 购买 卡密:BaCodeA
  • q***268 15:47:12 购买 卡密:BaCodeA
  • q***867 15:34:24 购买 卡密:BaCodeA
  • 3***798 15:04:37 捡便宜 虚机:HCB0
  • q***756 14:49:01 开通 虚机:ghost001
  • 3***798 14:36:41 下单 虚机:HCB0
  • 3***798 14:32:19 下单 虚机:HCB0
  • 1***588 14:29:04 购买 卡密:BaCodeB
  • q***ang 14:21:15 create 虚机:HCU0
  • q***ang 14:20:56 下单 虚机:HCU1
  • q***756 14:15:29 下单 虚机:ghost001
  • 0***seo 14:15:00 捡便宜 虚机:HCB0
  • 0***seo 14:13:52 下单 虚机:HCB0
  • 0***seo 14:13:03 下单 虚机:HCU0
  • q***867 14:02:15 购买 卡密:BaCodeA
  • 1***306 13:05:01 续费 虚机:HCV1

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

 

问题得到解决。



来源:万维景盛
日期:2016/7/16

打印 】 
上一篇:中国移动动态短信验证码安全防护方案全文最新版
下一篇:PHP Warning: file_put_contents temp/caches PHP Notice: can''t write in cls_template.php
  >> 相关文章
 
  CENTOS服务器怎样下载和编译安装libiconv-1.15.tar.gz​扩展的方法
  数据库迁移后报错提示MySQL Error:Can''t find file errno: 13 - Permission denied的解决方法
  SQL Server 2008数据库总是报错不支持给定路径的格式解决方法
  在ASP语言代码中怎样判断ADODB连接对象已经关闭释放?
  PHP语言开发的ECSHOP在线支付插件之交通银行网银在线支付接口源代码
  MSSQL导出为excel表格报错未在本地计算机上注册microsoft.ACE.oledb.12提供程序的解决方法
  从sql server数据库导出的Excel数据怎样批量转换文本成数字格式
  Navicat Premium导入excel2007/2010提示打不开文件怎么办?
会员 客服 QQ 电话 充值 工单
Top

客服热线

010-57180806

18610695105

请拨总机 010-57180806

咨询售后问题建议 提交工单