收藏 分享(赏)

ecshop错误大全.doc

上传人:11xg27ws 文档编号:7806548 上传时间:2019-05-26 格式:DOC 页数:8 大小:52KB
下载 相关 举报
ecshop错误大全.doc_第1页
第1页 / 共8页
ecshop错误大全.doc_第2页
第2页 / 共8页
ecshop错误大全.doc_第3页
第3页 / 共8页
ecshop错误大全.doc_第4页
第4页 / 共8页
ecshop错误大全.doc_第5页
第5页 / 共8页
点击查看更多>>
资源描述

1、ecshop 错误大全概要:本文针对于对 ecshop 接触时间不久的同事制作Maximum execution time of 30 seconds exceeded(30 秒运行超时的错误。 )提示解答:修改 php 执行文件加上set_time_limit(0);?“0”为永不过时,也可设置为其他时间。二 安装 Ecshop 首页出现报错常见的问题解决办法(在网上看到整理的)安装 Ecshop 首页出现报错: Only variables should be passed by referen最近想安装一个 ECSHOP 商城上去,老是报错,出现下面这就话:Strict Standard

2、s: Only variables should be passed by reference in D:*includescls_template.php on line 406 第 406 行: $tag_sel = array_shift(explode( , $tag);解决办法 1 5.3 以上版本的问题,应该也和配置有关 只要 406 行把这一句拆成两句就没有问题了$tag_sel = array_shift(explode( , $tag);改成:$tag_arr = explode( , $tag);$tag_sel = array_shift($tag_arr);(实验过,绝

3、对可行) 因为 array_shift 的参数是引用传递的,5.3 以上默认只能传递具体的变量,而不能通过函数返回值 解决办法 修改完了要记得清理缓存。2 :或则如果这样配置的话: error_reporting = E_ALL | E_STRICT 估计也可( 未测试过,实验中)修改完上面这个问题之后,可能还会出现下面这个问题:Strict Standards: Non-static method cls_image:gd_version() should not be called statically in D:*XXecshopshiincludeslib_main.php on li

4、ne 1316经过查询“includeslib_main.php“ 文件的 1316 行发现,还是同样的问题:/$ext = end(explode(., $tmp);我们把上面这句拆分为下面这三句:$ext = end(); $ar = explode(., $tmp);$ext = end($ar);就正常了(亲自测试过的,没问题)$tmp = basename($tmp,“.$ext“);如果主机的 GD 库不存在或者版本不同还有可能出现下面这句错误提示:Strict Standards: Non-static method cls_image:gd_version() should n

5、ot be called statically in D:*Xincludeslib_base.php on line 346直接找到“includeslib_base.php” 文件的 346 行左右,将这句:/return cls_image:gd_version();注释掉就可以了,当然,如果你的程序需要 GD 库支持,那就要咨询下服务器空间商了,只作简要说明Strict Standards: Only variables should be passed by reference in uploadincludescls_template.php on line 418第 418 行:

6、$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 以上默认只能传递具体的变量,而不能通过函数返回值同理举一反三:遇到函数嵌套错误时可以分开写,错误自然解决如:functi

7、on 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 . $GLOBALSecs-table(template) .“ WHERE theme = $theme AND filename = “ . $tmp . “ AND type 0 AND remarks=“. ORDER BY region, l

8、ibrary, sort_order;$res = $GLOBALSdb-getAll($sql);$dyna_libs = array();foreach ($res AS $row)$dyna_libs$rowregion$rowlibrary = array(id = $rowid,number = $rownumber,type = $rowtype);return $dyna_libs;将$ext = end(explode(., $tmp);改为$extsub = explode(., $tmp);$ext = end($extsub);解决办法 2(屏蔽错误) :或则如果这样配置

9、的话: error_reporting = E_ALL | E_STRICTphp.ini 中有如下设置:error_reporting = E_ALL | E_STRICT这是说,显示那些不符合编码规范的警告(coding standards warnings) 。Joomla 其实是建议取消 error 的输出,如果出于调试需要,应改为error_reporting = E_ALL 把 1 修改成零D:workspaceecshopadminincludes 下的 init.php 文件 修改ini_set(display_errors, 1); 把 1 修改成零解决办法二:根源上解决错误

10、第一个提示的意思是 cls_image 类里面的 gd_version 函数不是静态方法,不能用cls_image:gd_version 调用。这个和 gd 库没有一点关系,是 ecshop 程序的问题。找到 includeslib_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_versi

11、on();/恢复动态调用将第 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:WWWecshopadminincludescls_

12、sql_dump.php on line 90此问题主要是 php4 与 php5 版本引起的/* 类的构造函数* access public* param* return void*/function cls_sql_dump(if ($max_size 0 )$this-max_size = $max_size;/* 类的构造函数* access public* param* return void*/function _construct(改为/* 类的构造函数* access public* param* return void*/function _construct(/* 类的构造

13、函数* access public* param* return void*/function cls_sql_dump(if ($max_size 0 )$this-max_size = $max_size;五、ECshop 后台显示 Deprecated: Assigning the return value of new by reference is deprecated in admingoods_batch.php on line 921公司接了个做网店的项目,用 ECshop 开发,装在 window7 下,后台管理出现了( ! ) Deprecated: Assigning t

14、he return value of new by reference is deprecated in F:wampwwwECshopadmingoods_batch.php on line 921这个错误,网上搜了好长时间,找到答案了只要把 admin 目录下的 goods_batch.php 文件的 921 行$filter = new 前边的六、会员自动退出漏洞ecshop 使用就了就会发现越来越多的 bug,现在这边又遇到了一个奇怪的问题,就是网站上的注册会员登录之后,在个别的地方个别的浏览器上会出现浏览了几个页面之后自动退出的现象。因为我在我这边测试一直没有捕抓到这个bug,是通过

15、我们的一个客户发现的,然后反馈上来。会出现这种问题,不外乎就是当前会员的 session 或者程序对 cookie 的处理存在漏洞。进过本地测试,includesmodulesintegratesecshop.php 这个整合自身会员的类中没有重写 integrate.php 中的 check_cookie()方法导致 ,验证 cookie 时返回的username 为空,丢失了登录状态,在 ecshop.php 中重写了此方法就可以了。把他加到 ecshop.php 的最后面去就可以了。望尽快把这个 bug 给补上。/* 检查 cookie* access public* param* re

16、turn void*/function check_cookie ()if ( isset($_COOKIEECS) $ecs_user_pass = $_COOKIEECSpassword;$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-get

17、One($sql);if ($username return $username;elsereturn ;七问题:出现错误代码:ECshop lib_base.php on line 1241 、Notice: Undefined variable: data in D:wwwrootKISSwwwrootincludeslib_base.php on line 1241Warning: require() function.require: Unable to access D:/wwwroot/KISS/wwwroot/languages/common.php in D:wwwrootKI

18、SSwwwrootincludesinit.php on line 124Warning: require(D:/wwwroot/KISS/wwwroot/languages/common.php) function.require: failed to open stream: No error in D:wwwrootKISSwwwrootincludesinit.php on line 124Fatal error: require() function.require: Failed opening required D:/wwwroot/KISS/wwwroot/languages/

19、common.php (include_path=.;D:/wwwroot/KISS/wwwroot/) in D:wwwrootKISSwwwrootincludesinit.php on line 124解决办法:到 temp 文件夹下把 static_caches 文件下的文件都删除就可以了-八 问题:ECSHOP 验证码前台或评论不显示,后台登录能显示针对 ECSHOP 验证码前台不显示,后台登陆显示,就排除了 GD 库没有安装的问题。查看 GD 库是否安装,请登录 ECSHOP 后台的起始页的系统信息,GD 版本:,例如我的就是 - GD 版本: GD2 ( JPEG GIF PNG

20、)注释掉 includesinit.php 文件下的这段代码:3、以上方法若还不能解决问题,最后用原始的 languageszh_cncommon.php 覆盖,并把根目录下面的 captcha.php 里的空白行删除。可能原因:languageszh_cncommon.php 这个文件经过修改后,可能某个字符串太长或者其他原因导致验证码不显示。例如:将:$_LANGcopyright = “ 2005-%s %s 版权所有,并保留所有权利。“;修改为:$_LANGcopyright = “seo 永夜“;就可能导致验证码不显示。注释掉的意思是屏蔽要屏蔽的内容 前后加-九 问题 :定要改后台路

21、径下面以 Ecshop 2.7.2 为例进行修改 首先,修改后台目录名 admin 为你想要的,这里我设置为 seoyy;其次,找到 data/config.php,修改这里的路径名为seoyy, define(ADMIN_PATH,seoyy) 。OK,在 2.7.2 版本里就已经修改完成,如果用低版本的需要改的文件太多,这里就不介绍了,建议升级到最新并打好补丁。-十 问题 Ecshop 访问 500 错误提示是怎么回事,如何解决?出现 500 错误的原因是很多的,一般来说,如果程序出错,那么在浏览器内会返回给用户一个友好的错误提示,统一称之为服务器 500 错误。解决的方法就是您必须在 h

22、ttp 中能够正确的获得错误信息,方法为:请打开浏览器,选择工具,internet 选项,高级,在高级中的浏览项目里面有一个“显示 http 友好错误提示“的复选框,请取消该复选框 ,并关掉窗口重新打开 IE 浏览器,这样您可以获得正确的错误提示。在获得正确的错误提示之后,您就可以根据该错误提示检查您具体的出错原因了,这类错误一般是数据库方面或者空间商的问题,可以咨询空间供应商。-十一 问题:Ecshop 乱码二:在 DIV 修改 ECSHOP 时,有时会需要在数据库中加入一些字段 ,可能在存储过程中会遇到乱码问题,答案:问题出在 ECSHOP 在把资料放进数据库时, 经过了 htmlenti

23、ties 的处理, 防止 javascriptr 的恶意输入,文件位于/includes/lib_passport.php 第 165 行:原代码: $other$key = htmlentities($val); /防止用户输入 javascript 代码只要把 htmlentities 换成 htmlspecialchars 就 OK 了$other$key = htmlspecialchars($val); /防止用户输入 javascript 代码另一个文件位于/includes/lib_transaction.php 第 85 行:原代码: $profileother$key = h

24、tmlentities($val); /防止用户输入javascript 代码修改后的代码为:$profileother$key = htmlspecialchars($val); /防止用户输入 javascript 代码-十二 问题 :如何添加自定义 lbi 文件下面以 ECSHOP 2.7.2 为例,添加自定义的 lbi 文件1.找到 admin 下面 includeslib_template.php 找到$page_libs = array( 这里. 给您需要的页面加上 你自己的 seoyy.lbi2.找到 languages 下面的 zh_cnadmintemplate.php 添加$_LANGtemplate_libsseoyy = 我的 seoyy;3. 在 themes模板文件夹下面的 libs.xml 修改, 加上 /labrary/seoyy.lbi4. 在 labrary 加上 seoyy.lbi这样就 OK 了。本文有部分是在网上摘选下来的

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报