PHP中的Division by zero报错处理技巧_第1页
PHP中的Division by zero报错处理技巧_第2页
PHP中的Division by zero报错处理技巧_第3页
PHP中的Division by zero报错处理技巧_第4页
PHP中的Division by zero报错处理技巧_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

本文格式为Word版,下载可任意编辑——PHP中的Divisionbyzero报错处理技巧ecshop片面模板使用时,会展现“Warning:Divisionbyzeroinxxxxxlib_goods.php”错误,那么怎么处理呢?来看看我的共享吧!

错误提示

在开启某些产品分类或者某些产品页面的时候,特定语言才报错。

错误是:Divisionbyzeroinxxx

错误理由

这个错误的理由,就是运算的过程中,被除数是0。上过小学的都知道“0是不成以作为被除数的”。

解决思路

1:判断值为0的时候跳过运算;

2:假设非要赋值给一个变量,可以做判断后赋固定值或者输出false,后面代码判断假设变量是true才使用它举行下一步代码的实现。

DEBUGING

解决问题之前,先来个两个小学识点:

1、在opencart中,vqmod的优先等级是最高的;

2、哪里报错不确定错误就在哪里,但是首先看的还是报错的地方。

从上图中,我们找到了vqcache下对应的文件对应行数,察觉如下代码:

//Cosyonecustomcodestarts

iffloat$result[special]

$sales_percantage=$this-tax-calculate$result[price],$result[tax_class_id],$this-config-getconfig_tax-$this-tax-calculate$result[special],$result[tax_class_id],$this-config-getconfig_tax/$this-tax-calculate$result[price],$result[tax_class_id],$this-config-getconfig_tax/100;

else

$sales_percantage=false;

从这个代码可以看出有若干个参数,我们留意“/”后面的被除数就好,这里被除数有两个地方,其中其次个是正整数100,可以摈弃。那么问题就在下面这段代码中:

$this-tax-calculate$result[price],$result[tax_class_id],$this-config-getconfig_tax

我们从上面这个方法里看到三个参数,分别用print_r打印了下参数的值,结果察觉其次个参数“$result[tax_class_id]”是“000000”。很鲜明,假设这个是0,我们就要让:

$sales_percantage=false;

所以我们这里的代码要修改为:

//Cosyonecustomcodestarts

iffloat$result[special]$result[tax_class_id]

$sales_percantage=$this-tax-calculate$result[price],$result[tax_class_id],$this-config-getconfig_tax-$this-tax-calculate$result[special],$result[tax_class_id],$this-config-getconfig_tax/$this-tax-calculate$result[price],$result[tax_class_id],$this-config-getconfig_tax/100;

else

$sales_percantage=false;

也就是,加多一个判断依据,务必得志两个值都存在的前提下,才举行如下运算,否那么是false。

修改代码,保存代码,上传文件,刷新页面,警告提示语消散,over。

但是,终究我们改的是缓存文件,真刚要修改好代码,我们还是要把代码写到核心文件或者插件的文件里。

修改源

首先,我们从三个地方查找,分别是:

核心文件:/catalog/controller/product/category.php;

vqmod:/vqmod/xml/*.xml;

ocmod:上传插件的ocmod.xml文件备份,或者数据库查看:oc_modification表xml字段;

虽然vqmod的优先等级高于ocmod,但是其实先从对比便当的地方找起也是可以的。有个方法可以摈弃是否ocmod。假设是ocmod插件的,缓存文件名必定有“system_storage_modification”。

但是也由于vqmod优先等级最高,所以被ocmod缓存的文件的文件名也可能有这个字样,所以排查的依次如上所述。

核心文件的话,编辑器开启ctrl+F举行关键字查找修改。

假设是vqmod的xml,要么摈弃法摈弃不成能是的文件,然后从可能是的文件里查找。假设文件太多就用notepad++等编辑器或者IDE工具,可以举行目次探寻,从中找到文件。

假设是ocmod,那么用MYSQL工具举行字段like%...%探寻,或者用SQL语句:

SELECT*FROM`oc_modification`WHERE`xml`like%关键代码%

由于这里存的数据被转义过,所以探寻的内容不要带有换行之类的,抓取对比有特点的代码举行查找和修改。修改的时候留神转义的影响哈。当然现在好多MYSQL管理工具这一点做的还是挺好的。建议最好修改插件的ocmod.xml文件,然后重新上传一次。平日插件装了后自己留备份还是有必要的。假设没文件就导出备份再修改。

扩展

上面的例如代码刚好是刚遇到的,所以拿来举例子。授人以鱼不如授人以渔,有的小问题大家花钱又心疼,想自己折腾也未尝不成以,以后还是会供给更多这类对比初级的解决方案给大家。下面另外举例子:

$a=0;

$value=$key/$a;

//这样可能会提示警告语

if$a

$value=$key/$a;

else

$value=false;

//对$value举行赋值计算结果或者false,也可以赋值预设数字,以便后面举行引用。

上面的方法只是一些例如和排错的技巧,一种思路,概括处境概括分析,但是解决问题要有明显的思路哈。学会一种技巧少走一些弯路,少花一些钱还是可以

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论