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

    首先,一般情况下,我们会加一个调试标志,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. ligbox 插件介绍

    浏览器支持情况:一般情况都支持.最好是jQuery v1.x + lightbox.js,这样的组合IE6,IE7,IE8也支持! 1 light插件的下载地址:https://pan.baidu.c ...

  2. aptana怎么显示空格 tab和回车等

  3. 浅析AnyCast网络技术

    什么是BGP AnyCast? BGP anycast就是利用一个(多个) as号码在不同的地区广播相同的一个ip段.利用bgp的寻路原则,短的as path 会选成最优路径(bgp寻路原则之n),从 ...

  4. IP路由配置之---------配置PPP

    实验设备:两台华三路由器,两台PC,一条V.35线 PPP是数据链路层的协议,链路层的协议有很多如帧中继fr等 实验一,PAP验证(是一种以明码传送用户名和密码的验证方式) 步骤一,在主验证方设置一个 ...

  5. pipeline-安全测试

    代码安全检查 需要安装SonarQube(版本6.7,安装了Findbugs插件) MySQL >=5.6,笔者安装的是MySQL 5.7版本 Jenkins需要安装下列插件: SonarQub ...

  6. HDU 6301 Distinct Values

    题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=6301 多校contest1 题目大意是有一个长度为N的数组,给出M个"事实",每个 ...

  7. MongoDB入门(一)

    文档 文档是MongoDB中的基本数据结构,型如:{"name":"Jack","lastname":"xi"} 键值对 ...

  8. django mysql 数据库配置

    在settings.py中保存了数据库的连接配置信息,Django默认初始配置使用sqlite数据库. DATABASES = { 'default': { 'ENGINE': 'django.db. ...

  9. js控制easyui文本框例子及控制html例子

    easyui $('#value').textbox('setValue',''); //赋值 $('#value').textbox({required:false});//必填,方框变红 $('# ...

  10. Linux安装配置Redis,CentOS7下安装Redis教程

    1.下载Redis wget https://download.redis.io/releases/redis-3.0.4.tar.gz 2 . 解压Redis .tar.gz 3 . 编译安装Red ...