Ecshop运行php5.3异常解决汇总.
- 格式:pdf
- 大小:131.90 KB
- 文档页数:5
升级PHP5.3后站点变慢的解决方法是什么我们使用电脑和手机时候最不能忍受就是设备又卡又慢了,严重影响我们工作或者游戏体验。
大多数PHP页面实际上都是数据库驱动的,要连接数据库才能显示出来,而响应时间过长的原因便在于PHP 5.3连接数据库的方式有所改变,这里简单给大家分享下,方便需要的朋友解决办法:方法一:上面已经说到,这是因为PHP 5.3在面对数据库配置信息中的“localhost”会犹豫,因此直接把这个地址改名为“127.0.0.1”就可以,例://数据库连接信息$cfg_dbhost = 'localhost'; //改此处的localhost为:127.0.0.1>方法二:IIS 7及IIS7.5是默认开启IPv6组件的,现在不少国内大厂商同样在部署IPv6;如果你的服务器用不上IPv6网络,那么直接把IPv6禁用即可,打开“%systemroot%\System32\drivers\etc\hosts”这个文件,注释掉“::1 localhost”即可。
方法三:直接把PHP版本降级即可,保持在PHP 5.2.17版本,这是目前用得最多的版本,几乎所有的PHP网站程序都可以运行在这个版本上。
经测试,在PHP 5.2系列版本,IIS 7和IIS 7.5均能保证高效运行PHP网站程序。
补充:解决系统变慢的常用技巧方法1、在我的电脑窗口,右击要清理的盘符―“属性”―“清理磁盘”--勾选要删除的文件--确定--是。
2、右键浏览器e――属性――点2个删除1个清除(都要逐一确定)――确定。
3、把C:\WINDOWS\Prefetch(预读文件)把里面的文件全部删除4、用优化大师或超级兔子清理注册表和垃圾文件。
5、“开始”――运行中输入msconfig――确定――启动――除了输入法ctfmon以外的勾全去掉。
6、右键我的电脑”――属性――点高级――点启动和故障恢复中的设置――去掉所有的勾――写入调试信息选择“无”――确定――点高级下面错误报告――点禁用――2次确定。
Ecshop错误大汇总Ecshop错误大汇总分类:PHP2013-07-21 20:44262人阅读评论(0)收藏举报一、出现下面这就话: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_STRICTphp.ini中有如下设置:error_reporting = E_ALL | E_STRICT这是说,显示那些不符合编码规范的警告(coding standards warnings)。
Ecshop常见问题汇总ECSHOP开发中心()1、如何修改网站"欢迎光临本店"回答(1) languages\zh_cn\common.php文件中,$_LANG['welcome'] = '欢迎光临本店';将他修改成你需要的字样。
还有member_info.lbi里面的welcome字样。
回答(2) 打开网站后台-模板选择-语言项编辑选择公共语言包-搜索“欢迎”进行修改2、如何修改登录\注册字体的颜色在库文件member_info.lbi 中修改3、如何修改首页"热门搜索关键字"后台-系统设置-网店设置-显示设置-首页搜索关键字,修改他的内容,然后保存,必须是英文半角字符隔开4、如何修改首页标题"Powered by ECShop"includes/lib_main.php,找到$page_title = $GLOBALS['_CFG']['shop_title'] . ' - ' .'Powered by ECShop';修改成$page_title = $GLOBALS['_CFG']['shop_title']就可以了。
5、如何发布首页公告后台->系统设置->商店设置->网店信息->商店公告.6、如何修改网站logo用你的logo图片替换/themes/当前使用模板/images/logo.gif (以你当前logo图的名称为准)7、如何去除ecshop产品详细页产品点击率模板文件中,打开goods.dwt,删除<strong>{$lang.goods_click_count}:</strong>{$goods.click_count}8、网站公告代码段在那里index.php文件中, $smarty->assign('shop_notice', $_CFG['shop_notice']); // 商店公告代码段控制公告9、网站首页"精品推荐"显示数量在那里设置ecshop中,为了让更多更丰富的购买信息显示在首页,可以根据自己所在行业特点,根据自己所在行业购买行为的分析,在ecshop首页设置热买促销新品的数量,让版面更加合理,让用户体验.设置ecshop首页热买商品的数量.模板管理-> 设置模板-> 热买商品(修改其显示数量)修改下面的10为你需要的数量,这就是热买商品设置ecshop首页新品的数量.模板管理-> 设置模板-> 新品上架(修改其显示数量)修改下面的10为你需要的数量,这就是新品上架设置ecshop首页精品的数量.模板管理-> 设置模板-> 精品推荐(修改其显示数量)修改下面的10为你需要的数量,这就是精品推荐10、如何修改产品的库存商品管理-> 商品列表-> 选中(库存),编辑11、如何修改ecshop表的前缀修改data/config.php下的$prefix = "ecs_";将ecs_修改成你需要的前缀.其次,在数据库中,修改表名比如ecs_ad修改为"xxx_ad";12、如何调用促销产品后台-商品管理- 商品列表- 编辑产品- 通用信息- 勾上促销价-填写促销期限-保存-清除缓存13、如何显示商品品牌列表商品管理- 商品品牌- 增加品牌-> 保存增加该品牌下的产品商品管理- 增加新产品- 选择商品品牌- 保存- 清除缓存(ps:为什么我添加的品牌图片没有显示,很显然你上传的商品没有选择该品牌)14、如何修改ecshop导航栏目名称后台- 系统设置-> 自定义导航栏- 编辑- 修改导航栏名称(导航有顶部、中部和底部)15、ecshop产品相关的图片有哪几种$goods_img = ''; // 初始化商品图片$goods_thumb = ''; // 初始化商品缩略图$original_img = ''; // 初始化原始图片$old_original_img = ''; // 初始化原始图片旧图16、如何修改“支付方式”显示顺序打开ecs_payment表,如果你想让他显示在前面,你将设置pay_order值小一些,比如想让“支付宝”排第一,“快钱”排第二,你就可以设置支付宝pay_order=1,快钱pay_order=217、如何修改详细页的积分详细页面的积分在模板<strong>{$lang.goods_give_integral}</strong><font>{$goods.give_integral}{$points_name}</font>中来控制的18、如何修改产品缩略图大小后台- 系统设置- 网店设置- 显示设置- 缩略图宽度.,当然你也可以设置缩略图高度19、如何设置ecshop货币格式和日期格式后台- 系统设置- 网店设置- 显示设置- 货币格式(¥%s元)或者时间格式(Y-m-d H:i:s)20、如何开取和关闭ecshop登陆验证码后台- 系统设置- 验证码管理,开启或关闭21、ecshop如何删除“注册用户”,“VIP用户”价格会员管理- 会员等级- 删除或者不显示对应会员等级的价格22、如何修改调整ecshop用户中心左侧栏目模板文件library/user_menu.lbi中。
PHP异常处理办法PHP异常处理办法人都会出错,更何况程序,那么当PHP异常是该怎么处理?一起来看看吧!更多消息请关注应届毕业生网!扩展 PHP 内置的异常处理类PHP 5 添加了类似于其它语言的异常处理模块。
在 PHP 代码中所产生的异常可被 throw 语句抛出并被 catch 语句捕获。
需要进行异常处理的代码都必须放入try 代码块内,以便捕获可能存在的异常。
每一个 try 至少要有一个与之对应的 catch。
使用多个 catch 可以捕获不同的类所产生的异常。
当 try 代码块不再抛出异常或者找不到 catch 能匹配所抛出的异常时,PHP 代码就会在跳转到最后一个 catch 的后面继续执行。
当然,PHP 允许在catch 代码块内再次抛出(throw)异常。
当一个异常被抛出时,其后(译者注:指抛出异常时所在的代码块)的代码将不会继续执行,而 PHP 就会尝试查找第一个能与之匹配的` catch。
如果一个异常没有被捕获,而且又没用使用set_exception_handler() 作相应的处理的话,那么PHP 将会产生一个严重的错误,并且输出Uncaught Exception ... (未捕获异常)的提示信息。
Note:PHP 内部函数主要使用错误报告, 只有现代面向对象的扩展才使用异常。
但错误可以很容易的通过ErrorException转换为异常。
TipPHP标准库 (SPL) 提供了许多内建的异常类。
Example #1 抛出一个异常<![CDATA[<?phpfunction inverse($x) {if (!$x) {throw new Exception('Division by zero.');}else return 1/$x;}try {echo inverse(5) . " ";echo inverse(0) . " ";} catch (Exception $e) {echo 'Caught exception: ', $e->getMessage(), " ";} // Continue executionecho 'Hello World';>以上例程会输出:0.2Caught exception: Division by zero.Hello WorldExample #2 嵌套的异常<?phpclass MyException extends Exception { }class Test {public function testing() {try {try {throw new MyException('foo!');} catch (MyException $e) {/* rethrow it */throw $e;}} catch (Exception $e) {var_dump($e->getMessage());}}}$foo = new Test; $foo->testing(); >以上例程会输出:string(4) "foo!"。
Php常见错误和解决⽅法Php常见错误和解决⽅法下⾯是php语⾔总结的⼀些常见错误,跟⼤家聊⼀下:php编程难免会遇到⼀些错误,调试错误虽然不是⼀门⾼深的学问但是有效的查找却很重要。
基本策略应遵循⼀下原则:1)出现错误,判断错误出现在那个环节。
2)判断出错原因,估计错误出现的位置3)查找错误根源4)对错误进⾏修改,⾸先要先备份,别弄的错误越改越多。
5)对修改后的代码进⾏测试。
⼿段:1)增加中间变量或者跟踪变量。
例如输出⼀⾏代码或者输出⼀些相关变量来发现错误根源;2)注释掉部分代码(排除法),当⽆法测试出错误根源的时候,就使⽤排除法,先注释掉⼀下代码,然后运⾏查看错误是否依然存在。
如果仍然存在则继续注释。
3)同过调试器来单步调试,这样可以跟踪整个程序的执⾏过程。
发现是否有些应该被执⾏的代码没有被执⾏。
或者变量赋值错误等各种导致错误的原因。
常见错误分享:1。
语法错误:1)缺少分号。
在编写代码的时候由于某个语句或者变量的结尾处没有使⽤“;”,从⽽导致程序出错;Parse error: syntax error, unexpected T_ECHO in D:\jworkServer\wwwroot\blog\login.php on line 42)缺少单引号或者双引号Parse error: syntax error, unexpected $end in D:\jworkServer\wwwroot\blog\login.php on line 73)缺少关键字或者逻辑结构例如没有写while条件Parse error: syntax error, unexpected ';', expecting T_WHILE inD:\jworkServer\wwwroot\blog\login.php on line 144)缺少括号出错在程序的最后⼀⾏⽽且其并没有错误,就很可能哪⾥缺少括号了Parse error: syntax error, unexpected ';' in D:\jworkServer\wwwroot\blog\login.php on line 155)缺少美元符号$;2.语义错误例如:$e=$a+$b+$c;⽽在php中的连接符是“。
PHP错误异常处理详解异常处理(⼜称为错误处理)功能提供了处理程序运⾏时出现的错误或异常情况的⽅法。
异常处理通常是防⽌未知错误产⽣所采取的处理措施。
异常处理的好处是你不⽤再绞尽脑汁去考虑各种错误,这为处理某⼀类错误提供了⼀个很有效的⽅法,使编程效率⼤⼤提⾼。
当异常被触发时,通常会发⽣:当前代码状态被保存代码执⾏被切换到预定义的异常处理器函数根据情况,处理器也许会从保存的代码状态重新开始执⾏代码,终⽌脚本执⾏,或从代码中另外的位置继续执⾏脚本PHP 5 提供了⼀种新的⾯向对象的错误处理⽅法。
可以使⽤检测(try)、抛出(throw)和捕获(catch)异常。
即使⽤try检测有没有抛出(throw)异常,若有异常抛出(throw),使⽤catch捕获异常。
⼀个 try ⾄少要有⼀个与之对应的 catch。
定义多个 catch 可以捕获不同的对象。
PHP 会按这些 catch 被定义的顺序执⾏,直到完成最后⼀个为⽌。
⽽在这些 catch 内,⼜可以抛出新的异常。
1. 异常的使⽤当⼀个异常被抛出时,其后的代码将不会继续执⾏,PHP 会尝试查找匹配的 "catch" 代码块。
如果⼀个异常没有被捕获,⽽且⼜没⽤使⽤set_exception_handler() 作相应的处理的话,那么 PHP 将会产⽣⼀个严重的错误,并且输出未能捕获异常(Uncaught Exception ... )的提⽰信息。
抛出异常,但不去捕获它:<?phpini_set('display_errors', 'On');error_reporting(E_ALL & ~ E_WARNING);$error = 'Always throw this error';throw new Exception($error);// 继续执⾏echo 'Hello World';>上⾯的代码会获得类似这样的⼀个致命错误:Fatal error: Uncaught exception 'Exception' with message 'Always throw this error' in E:\sngrep\index.php on line 5Exception: Always throw this error in E:\sngrep\index.php on line 5Call Stack:0.0005 330680 1. {main}() E:\sngrep\index.php:02. Try, throw 和 catch要避免上⾯这个致命错误,可以使⽤try catch捕获掉。
学习使人进步1、Strict Standards: Non-static method cls_image::gd_version() should not be called statically in F:\xampp\htdocs\ceshi\includes\lib_base.php on line 346找到\lib_base.php 第346行将它注释//return cls_image::gd_version();添加$p = new cls_image();return $p->gd_version(); 即可2、Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in F:\xampp\htdocs\ceshi\includes\cls_template.php on line 300找到\lib_template.php 第300行将它注释//return preg_replace("/{([^\}\{\n]*)}/e", "\$this->select('\\1');", $source); 添加return preg_replace_callback("/{([^\}\{\n]*)}/", function($r){return $this->select($r[1]);}, $source); 即可3、Strict Standards: Only variables should be passed by reference in F:\xampp\htdocs\ceshi\includes\cls_template.php on line 422找到\lib_template.php 第422行将它注释//$tag_sel = array_shift(explode(' ', $tag));添加$tag_arr = explode(' ', $tag);$tag_sel = array_shift($tag_arr); 即可4、Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in F:\xampp\htdocs\ceshi\includes\cls_template.php on line 1074找到\lib_template.php 第1074行//$pattern = '/<!--\s#BeginLibraryItem\s\"\/(.*?)\"\s-->.*?<!--\s#EndLibraryItem\s-->/se';// $replacement = "'{include file='.strtolower('\\1'). '}'";//$source = preg_replace($pattern, $replacement, $source);添加$pattern = '/<!--\s#BeginLibraryItem\s\"\/(.*?)\"\s-->.*?<!--\s#EndLibraryItem\s-->/s'; $replacement = function($r){return '{include file='.strtolower($r[1]). '}';}; $source = preg_replace_callback($pattern, $replacement, $source); 即可5、Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in F:\xampp\htdocs\ceshi\includes\cls_template.php on line 496找到\lib_template.php 第496行将它注释//$out = "<?php \n" . '$k = ' . preg_replace("/(\'\\$[^,]+)/e" , "stripslashes(trim('\\1','\''));", var_export($t, true)) . ";\n";添加$out = "<?php \n" . '$k = ' . preg_replace_callback("/(\'\\$[^,]+)/", function(){return stripslashes(trim('\\1','\''));}, var_export($t, true)) . ";\n";即可6、Strict Standards: Only variables should be passed by reference in F:\xampp\htdocs\ceshi\includes\lib_main.php on line 1329找到\lib_main.php 第1329行将它注释// $ext = end(explode('.', $tmp));添加$ext = explode('.', $tmp);$ext = end($ext);即可7、Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in F:\xampp\htdocs\ceshi\includes\cls_template.php on line 556找到\lib_template.php 第556行//$val = preg_replace("/\[([^\[\]]*)\]/eis", "'.'.str_replace('$','\$','\\1')", $val);添加$val =preg_replace_callback("/\[([^\[\]]*)\]/is", function(){return '.'.str_replace('$','\$','\\1');}, $val); 即可8、Strict Standards: Declaration of vbb::set_cookie() should be compatible with integrate::set_cookie($username = '', $remember = NULL)子类的函数跟父类的同名,必须使子类的函数参数跟父类的对应函数参数个数相同依据错误提示,修改例如:function set_cookie ($username="")改为function set_cookie ($username="", $remember = NULL)9、Strict Standards: mktime(): You should be using the time() function instead in F:\xampp\htdocs\ceshi\admin\sms_url.php on line 31将$auth = mktime();替换为$auth = time();10、Strict Standards: Redefining already defined constructor for class alipay in F:\xampp\htdocs\ceshi\includes\modules\payment\alipay.php on line 85PHP 类,有两种构造函数,一种是跟类同名的函数,一种是____construct()。
Php错误及异常调试的流程和方法掌握错误及异常处理流程和方法的意义掌握错误及异常处理的流程和方法,可以快速发现程序中的错误及异常情况,及时定位异常或错误的位置,分析错误及异常情况,进行错误或异常根源分析,进行备份修改,对程序进行测试,从而可以加速项目的进程。
异常处理异常处理的基本思想是代码在Try代码块被调用执行。
语法如下:Try{//错误出现的地方}Catch{//错误处理语句}异常还可以在一个Catch代码块产生新的异常,即Catch块语法错误。
实际上产生一个嵌套程序块。
错误类型一、语法错误实际编写程序的过程中,最常见的语法错误包括以下几个方面。
(1)括号不匹配;(2)缺少分号活引号;(3)忘记使用变量前的符号($);(4)关键字输入错误或者缺少逻辑结构;(5)错误地转义字符串中的特殊字符。
二、运行错误通常调试的时所遇到的运行时错误包括以下几种类型。
(1)包含的文件不存在;(2)检查输入数据失败;(3)连接到网络服务;(4)调用的函数不存在;(5)被访问的数据库或者数据库表不存在;(6)PHP服务器进程没有访问某个文件的权限。
三、逻辑错误逻辑错误是由于程序员思考有漏洞而出现的一种错误,隐蔽性都会比较强一些,只能适当地分不同情况进行反复测试才能检测到。
四、语义错误语义错误是在语法正确的基础上发生的错误,如在PHP中的连接字符串用“.”而如果用“+”则属于语义错误,不能得出正确的结果。
五、注释错误语句的注释表达错误或异义或不明确。
错误处理检查错误的环节找到错误的位置分析原因修改代码调试手段1、通过增加中间变量或跟踪变量进行调试;2、通过注释隔离代码法3、通过调试器单步调试在编写程序的过程中,无论是高级程序员或者初学者都无可避免进要进行程序的错误分析及调试,通过这个过程,不断的总结经验教训,知识和技能就在不断的重复的磨练中丰富和提高。
在编程的道路上方法和练习是成长必不可少的法宝!edit by Byron_buyi@ in 06/11/2011 14:56。
PHP常见的6个错误提⽰及解决⽅法在php开发过程中,由于不知道向谁求助⽽⼼慌意乱地判断以为⾃⼰不适合学php。
其实错误在每个⼈学习过程中都会碰到的,千万不要妄⾃菲薄。
很多错误在报错的代码提⽰中已经告诉我们了,仔细看,不会就百度。
现总结⼀些常见的php错误,以共享php新⼈。
Php常见错误提⽰⼀、Fatal error: Call to undefined function……函数不存在,可能的原因:1、系统不存在这个函数且你也没⾃定义2、有⼈会问,我在别的机器上就不报错。
那是因为环境不同,这个函数在本机没开,怎么开?你百度函数名字,就能查到这个函数属于哪个dll,去php.ini⾥开启。
实例讲解:PHP FATAL ERROR: CALL TO UNDEFINED FUNCTION BCMUL()解决办法在⼀台处理⽹络⽀付的服务器迁移的时候,发现不能⽀付。
PHP环境:PHP版本为5.3.3系统为Red Hat 4.1.2-54查看apache的错误⽇志,发现是加密⽂件中⼀个函数bcmul()报错:复制代码代码如下:PHP Fatal error: Call to undefined function bcmul() in /php_rsa.php on line xxx解决办法:使⽤如下命令:复制代码代码如下:yum install php-bcmath就安装好了。
如果出现下⾯这种情况:复制代码代码如下:Loaded plugins: fastestmirrorLoading mirror speeds from cached hostfile* base: * extras: * rpmforge: ftp.riken.jp* updates: Setting up Install ProcessResolving Dependencies--> Running transaction check---> Package php-bcmath.x86_64 0:5.1.6-40.el5_9 set to be updated--> Processing Dependency: php-common = 5.1.6-40.el5_9 for package: php-bcmath--> Running transaction check---> Package php-common.x86_64 0:5.1.6-40.el5_9 set to be updated--> Processing Conflict: php53-common conflicts php-common--> Finished Dependency Resolutionphp53-common-5.3.3-13.el5_9.1.x86_64 from installed has depsolving problems--> php53-common conflicts with php-commonError: php53-common conflicts with php-commonYou could try using --skip-broken to work around the problemYou could try running: package-cleanup --problemspackage-cleanup --dupesrpm -Va --nofiles --nodigest就需要使⽤yum update 之后再yum install php53-bcmath就好了顺便了解了⼀下,bcmath这个函数是PHP数学扩展中的⼀个。