我们可能一开始就接触一个项目的开发,刚开始时都是信心满满,一定把这个项目做得非常完美,但是时间那么少,任务那么多,我们就只有将就了。

    首先,一般情况下,我们会加一个调试标志,define('APP_DEBUG', true); 用以一些方便的地方进行特殊操作,也会将error_reporting打开,一般会很烦,通常会这么做,error_reporting(E_ALL & ~(E_STRICT | E_NOTICE));这样就会避免很多不必要的麻烦,提升开发速度同时,又能尽快发现问题,然后上线之后,直接error_reporting(0); 可能很多人是这么干的。

    但是,我们这样做真的好吗?线上的环境和测试环境难道就真的一点差异都没有?这是不可能的,所以,我们需要及时了解线上产品的一些运行情况,也就是说,线上,我们也需要错误报告,小公司直接找服务器管理员拿日志就OK,大公司的话一般要申请什么的,反正就是流程一堆。拿到日志之后,就需要对其中出现问题的地方进行修补,排查,处理问题。那么,要做到这一点,就需要把线上的error_reporting打开,而且配置的错误日志路径应该是一个绝对路径,否则,将会在各个地方产生错误日志(只有一个入口的情况除外),notice和strict就不要报了,其他的都报出来。

    总结一下,开发过程中,可能遇到的一些错误报告我们不怎么会在意的。 1、division by zero,除0操作,在涉及除数的时候,我们很多时候直接相除,而没有考虑0的情况,这是会被当作warning来处理的,在一些严格的语言中,甚至是当作致命错误来处理的,所以应该解决,php处理除0操作是把整个结果当作0的,自己可以根据业务需求进行相应设置。2、array_combine,这个函数是将数组一个以键一个以值的方式组合起来,但是,当有个值为空或非数组时,则会报一个warning,而且得到的值为null,而非有部分值,应当注意。3、foreach,当内部循环为boolean值时,也会发出一个warning,为字符串时则可以继续进行。4、json_encode,当当前编码不为utf-8而又有中文时,则报告一个warning,不是utf-8序列,处理办法,将其他编码转换成utf-8后,再进行json_encode。使用jquery的ajax功能时,是以utf-8传递的,接收时也需要转换成对应编码方可不乱码。

    ini_get相关几个实用选项,display_errors:是否显示错误, error_log:错误日志文件,include_path:默认搜索文件的路径也是当找不到文件时,给的最后一次查找机会。memory_limit: 最大内存限制,跑脚本或进行导出时特别注意。更多选项配置可参考 其他网友文章 。

    总之,能看得到错误,都是有隐患的,及早处理的好,赶时间,上班了。

php开发中应该注意的错误开关与常见处理[开发篇]的更多相关文章

  1. Vue CLI 3开发中屏蔽的EsLint错误 (.eslintrc.js 在vue3+中 修改这个)

    1.关闭eslint校验有了eslint的校验,可以来规范开发人员的代码,是挺好的.但是有些像缩进.空格.空白行之类的规范,在开发过程中一直报错,未免太过于苛刻了.所以,我还是会选择关闭eslint校 ...

  2. Code::Blocks开发中的字符串编码错误

    刚开始使用Code::Blocks开发Windows中文应用程序的朋友们,如果在代码中使用了中文字符串,编译时可能遇到过Illegal byte sequence或Failure to convert ...

  3. python开发中容易犯的错误整合

    写在前面 长期更新的博文.多数是一些比较隐蔽的问题.欢迎留言补充. pip并不是那么安逸 pip安装对于开发者来说确实是一种解放.可以自动安装依赖包,但执行最简单的pip安装命令时,并不是所有的依赖都 ...

  4. ERP程序开发中遇到的六种错误

    经常回顾同事写的代码,发现一些问题,总结分析,用于员工培训,或系统优化方面的内容教学. 文中有问题的的代码我用黑体字标识. 1 界面与逻辑代码混淆 这是目前发现的比较严重的问题.框架花费了很大的力气, ...

  5. Xamarin.Android 开发中遇到旋转屏幕错误

    错误信息 : System.NotSupportedException: Unable to find the default constructor on type App5.MyFragment. ...

  6. jQuery开发中容易忽视的错误

    1.引用jQuery库文件的<script>标签,必须放在引用自定义脚本文件的<script>标签之前,否则,就会发生找不到对象:最好在<head>元素中,把引入样 ...

  7. ios开发中遇到的编译错误总结

    1:Undefined symbols for architecture arm64: ? 1 2 3 <code>Undefined symbols for architecture a ...

  8. ibatis 开发中的经验 (三)Struts+Spring+Ibatis 开发环境搭建

             ibatis项目中用到了一些基本配置,须要和spring集成,看了看这些配置大部分同hibernate中是一样的,也比較好理解.仅仅是须要他们的配置中每个类的含义,还有当中的一些细节 ...

  9. MVVM框架在unity开发中的使用

    1.什么是MVVM 借用一下百度百科上对MVVM的介绍,MVVM是Model-View-ViewModel的简写,它本质上就是MVC 的改进版.MVVM 就是将其中的View 的状态和行为抽象化,让我 ...

随机推荐

  1. 550 5.7.1 Client does not have permissions to send as this sender

    收发邮件时出现以上这种情况,系统提示550 5.7.1 Client does not have permissions to send as this sender,这是什么原因赞成的呢? 活动目录 ...

  2. vs2010提取资源

    setlocal enabledelayedexpansion rem cd C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin set R ...

  3. Numpy三维数组的转置与交换轴

    二维数组的转置应该都知道,就是行列交换 而在numpy中也可以对三维数组进行转置,np.T 默认进行的操作是将0轴与2轴交换 本文主要对三位数组轴交换的理解上发表本人的看法. a = np.array ...

  4. 做u盘启动重装系统 进winPE 出现 cdboot:couldn't find ntldr 解决办法

    公司的QA本来用的ubuntu系统 觉得不是很好使 就找我重装win10系统  之前有重装过系统 就信心满满的答应了 我拿出U盘 把U盘格式化了下 去下载了个雨林木风的win10 系统(ISO文件) ...

  5. 使用es6的then()方法封装jquery的ajax请求

    使用场景: jsp页面中使用jquery的ajax请求比较频繁,以前vue框架的项目用过axios,所以就想着用then()封装一个公共请求的方法,这样每次请求就不用那么麻烦的写一大堆请求参数了. 示 ...

  6. jquery中bind和on的区别

    1.首先,来看看bind和on的语法. bind的用法: $('a').bind('click',[data],function(){}) 其事件的绑定者是固定的,就是a,第一个参数是事件,第二个参数 ...

  7. 《C#从现象到本质》读书笔记(五)第5章字符串第6章垃圾回收第7章异常与异常处理

    <C#从现象到本质>读书笔记(五)第5章字符串 字符串是引用类型,但如果在某方法中,将字符串传入另一方法,在另一方法内部修改,执行完之后,字符串的只并不会改变,而引用类型无论是按值传递还是 ...

  8. 相对于父元素的fixed定位的实现

    问题描述 之前在项目中,遇到了一个场景,需要实现相对于父元素的fixed定位:在父元素内拖动滚动条时,"fixed"定位的元素不能滑动,在外层拖动滚动条时,父元素及父元素内的所有元 ...

  9. print('{:15}|{:^9}|{:^9}'.format('', 'lat.', 'long.'))是什么意思?

    平台:win10 x64+Python3.7.0 先了解下——Python3 字符串格式化 Python字符串的格式化方法分为两种,分别为占位符(%)和format方式. 占位符方式在Python2. ...

  10. CPU寻址

    CPU组成和寄存器 1)CPU由运算器.控制器.寄存器等器件组成,这些器件靠内部总线相连 2)寄存器是CPU的组成部分,用来暂存指令.数据和地址,CPU对其读写速度是最快的,不需要IO传输 存储单元 ...