Ecshop错误大汇总

兵长一米六 发表于 2013-08-10 13:47:47 | 显示全部楼层 [复制链接]
17374 19
兵长一米六 发表于 2013-8-10 13:47:47 | 显示全部楼层
一、出现下面这就话:
Strict Standards: Only variables should be passed by reference in upload\includes\cls_template.php on line 418
第418行:$tag_sel = array_shift(explode(' ', $tag));
解决办法 1 ():
5.3以上版本的问题,应该也和配置有关 只要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);
解决办法 2(屏蔽错误) :
或则如果这样配置的话: 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
问题得到解决。
二、如果出现以下问题
Strict Standards: Non-static method cls_image::gd_version() should not be called statically in includes\lib_base.php on line 346
解决办法一:屏蔽错误
首先检查php.ini 中extension=php_gd2.dll 注释是否去掉
如果还有问题 查找error_reporting = E_ALL 修改成 error_reporting = 0
D:\workspace\ecshop\includes 下的init.php文件 修改@ini_set('display_errors', 1); 把1修改成零
D:\workspace\ecshop\admin\includes下的init.php文件 修改@ini_set('display_errors', 1); 把1修改成零
解决办法二:根源上解决错误
第一个提示的意思是cls_image类里面的gd_version函数不是静态方法,不能用cls_image::gd_version调用。这个和gd库没有一点关系,是ecshop程序的问题。
找到includes\lib_base.php错误行
function gd_version()
{
include_once(ROOT_PATH . 'includes/cls_image.php');
$cls_imageargs=new cls_image();
//return cls_image::gd_version();这里使用了静态调用
return $cls_imageargs->gd_version();//恢复动态调用
}
三、
将第64行
$smarty->assign('sql_name', cls_sql_dump::get_random_name() . '.sql');
改为
$cls_sql_dumpsub=new cls_sql_dump();
$smarty->assign('sql_name', $cls_sql_dumpsub->get_random_name() . '.sql');
四、
Strict Standards: Redefining already defined constructor for class cls_sql_dump in D:\WWW\ecshop\admin\includes\cls_sql_dump.php on line 90
此问题主要是php4与php5版本引起的
/**
* 类的构造函数
*
* @access public
* @param
*
* @return void
*/
function cls_sql_dump(&$db, $max_size=0)
{
$this->db = &$db;
if ($max_size > 0 )
{
$this->max_size = $max_size;
}
}
/**
* 类的构造函数
*
* @access public
* @param
*
* @return void
*/
function __construct(&$db, $max_size =0)
{
$this->cls_sql_dump($db, $max_size);
}
改为
/**
* 类的构造函数
*
* @access public
* @param
*
* @return void
*/
function __construct(&$db, $max_size =0)
{
$this->cls_sql_dump($db, $max_size);
}
/**
* 类的构造函数
*
* @access public
* @param
*
* @return void
*/
function cls_sql_dump(&$db, $max_size=0)
{
$this->db = &$db;
if ($max_size > 0 )
{
$this->max_size = $max_size;
}
}
五、
ECshop 后台显示Deprecated: Assigning the return value of new by reference is deprecated in admin\goods_batch.php on line 921
公司接了个做网店的项目,用ECshop开发,装在window7下,后台管理出现了
( ! ) Deprecated: Assigning the return value of new by reference is deprecated in F:\wamp\www\ECshop\admin\goods_batch.php on line 921
这个错误,网上搜了好长时间,找到答案了
只要把admin目录下的goods_batch.php文件的921行
$filter = &new stdclass;
new前边的&去掉就ok了,是不是很简单???
$filter = new stdclass;
六、会员自动退出漏洞
ecshop使用就了就会发现越来越多的bug,现在这边又遇到了一个奇怪的问题,就是网站上的注册会员登录之后,在个别的地方个别的浏览器上会出现浏览了几个页面之后自动退出的现象。因为我在我这边测试一直没有捕抓到这个bug,是通过我们的一个客户发现的,然后反馈上来。
会出现这种问题,不外乎就是当前会员的session或者程序对cookie的处理存在漏洞。
进过本地测试,includes\modules\integrates\ecshop.php这个整合自身会员的类中没有重写integrate.php中的check_cookie()方法导致,验证cookie时返回的username为空,丢失了登录状态,在ecshop.php中重写了此方法就可以了。把他加到ecshop.php的最后面去就可以了。望尽快把这个bug给补上。
/**
* 检查cookie
*
* @access public
* @param
*
* @return void
*/
function check_cookie ()
{
if ( isset($_COOKIE['ECS']) && isset($_COOKIE['ECS']['user_id']) && isset($_COOKIE['ECS']['password']))
{
$ecs_user_id = $_COOKIE['ECS']['user_id'];
$ecs_user_pass = $_COOKIE['ECS']['password'];
$sql = "SELECT " . $this->field_name ." AS user_name".
" FROM " . $this->table($this->user_table) .
" WHERE ".$this->field_id." = '$ecs_user_id' AND ".$this->field_pass." = '$ecs_user_pass'";
$username = $this->db->getOne($sql);
if ($username && ($this->charset != 'UTF8'))
{
$username = ecs_iconv($this->charset, 'UTF8', $username);
}
return $username;
}
else
{
return '';
}
}
我也来了
回复

使用道具 举报

源码爱好 发表于 2013-11-5 00:18:47 | 显示全部楼层
:)非常感谢,顶一下
购物商城www.shdvip.com
回复 支持 反对

使用道具 举报

148091508 发表于 2013-12-6 09:46:15 | 显示全部楼层
看后顶一下!谢谢分享:)
123必须是数字啊
回复 支持 反对

使用道具 举报

草木中人 发表于 2013-12-12 21:24:35 | 显示全部楼层
在网上浏览时,一个偶然的机会来到模板堂。能来模版堂,感觉真的很好啊。各位大神,大家好,我想用这个弄个站,不知这个好不好在wordpress上用,还有好不好管理,真心求教各位大神。希望对这方面比较懂的大神不吝赐教啊。谢谢。呵呵。跪拜。
嗯啊恩啊恩啊恩啊恩啊嗯啊嗯啊哦
回复 支持 反对

使用道具 举报

逝水无痕 发表于 2013-12-13 17:01:25 | 显示全部楼层
正好遇到这些问题了,看后顶一下!谢谢分享
痛苦的一天啊
回复 支持 反对

使用道具 举报

luody521 发表于 2014-1-21 03:08:03 | 显示全部楼层
模板堂的东西还是挺好用的。可惜自己没银子也只能用一些免费版的了。如果模板堂的价格再低一些就好了。
http://www.ertongsheyingwang.com/ 儿童摄影加盟
回复 支持 反对

使用道具 举报

lj19870908 发表于 2014-3-11 10:04:48 | 显示全部楼层
这样的技术贴 必须顶
不想说
回复 支持 反对

使用道具 举报

12下一页
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

返回模板堂官网|联系我们|小黑屋|关于商创|ectouch官网|手机版|ecjia官网|

快速回复 返回顶部 返回列表