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

    首先,一般情况下,我们会加一个调试标志,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. 使用jQuery+huandlebars循环遍历中使用索引

    兼容ie8(很实用,复制过来,仅供技术参考,更详细内容请看源地址:http://www.cnblogs.com/iyangyuan/archive/2013/12/12/3471227.html) & ...

  2. asmx 接收数据过大 发生错误

    原文:https://www.cnblogs.com/xinaixia/p/5945316.html 错误:已超过传入消息(65536)的最大消息大小配额.若要增加配额,请使用相应绑定元素上的 Max ...

  3. Object.assign()怎么用?

    用于对象的合并,将源对象(source)的所有可枚举属性,复制到目标对象(target). 1.以对象为参数的合并1)Object.assign方法的第一个参数是目标对象,后面的参数都是源对象 con ...

  4. pymongo操作mongodb

    此验证中只开启两个mongodb节点,可以连接任意节点,以下操作不涉及读写,不涉及连接那个节点 mongodb连接: from pymongo import MongoReplicaSetClient ...

  5. 9. Palindrome Number (JAVA)

    Determine whether an integer is a palindrome. An integer is a palindrome when it reads the same back ...

  6. Python自动化测试用例设计--测试类型

    1.前言 WEB自动化测试时候测试哪些类型,下面将介绍一下: 2. 测试类型 2.1 测试静态内容 静态内容测试是最简单的测试,用于验证静态的.不变化的UI 元素的存在性.例如: 每个页面都有其预期的 ...

  7. 100-days: seventeen

    Title: How 'Bohemian Rhapsody(波西米亚狂想曲)' ended up in 'Wayne's World(反斗智多星)' and became a phenomenon(现 ...

  8. 396. Rotate Function 移动加权求和,取最大值

    [抄题]: Given an array of integers A and let n to be its length. Assume Bk to be an array obtained by ...

  9. Linux之 Ngnix

    前言: WEB框架 django 大而全, 功能特别多 form表单 , ORM, 中间件 笨重,臃肿 600/s flask 轻量级的,小而精, 它使用的都是第三方模块进行拼接起来的 4988/s ...

  10. 获取CNVD的cookie

    def getCookie(self): #获取cookie spiderFirefox = webdriver.Firefox() spiderFirefox.get("http://ww ...