滥用error_reporting之大坑

写了一个脚本,批量输出静态内容。按照惯例,先require配置文件、公共文件,然后编码我的业务逻辑。

很顺利地写完了,调试的时候发现脚本毫无提示地异常地中断了,仔细看了一下代码,原来是一个函数未定义,但是为什么不会报错呢?我查看了php的配置display_error是打开的,而且我还设置了error_reporting(7),但是函数未定义的错误还是不会报,但如果在哪条语句后面没有加上分号却是能正常报错。

用strace看一下系统调用吧,看看有没有error之类的东东。

咦,竟然发现好多error_reporting,好像有点问题,一会设置error_reporting(7),一会设置error_reporting(0),这让人很凌乱,估计也会让解释器很凌乱。

很自然地,找到所有文件里面的error_reporting,将它设置为7,果然,未定义函数的错误报告出来了。

一般来说,线上运营的系统应该关闭错误报告【防止敏感信息外泄】,开发调试的时候是打开错误报告的【方便调试】。这种报错设置开关,一个项目里面一个地方控制就ok了,画蛇添足是不好的,除了会带来不可预测的错误,还不利于系统的维护。

时间: 2024-08-24 19:20:03

滥用error_reporting之大坑的相关文章

iOS--上传AppStore时遇到的10个大坑

2015.9.11更新 摘自:http://zhuanlan.zhihu.com/100000PM/20010725 相信大家一定非常「深恶痛疾」AppStore的一系列产品上架规则.每次产品上架,一定要折腾很久,让人蛋疼.所以特此发起本期沙龙,为大家带来一些经验. 闫国荣:以下是现在能记忆起,遇到的问题.大家对此有不清楚的地方可以提出来,我详细介绍下. 内容含敏感话题或对苹果不友好的信息(如苹果婊) 使用了友盟的统计SDK,获取了IDFA但是上传填写无广告 采用友盟IDFA的sdk,并用友盟的

PHP中 error_reporting 这个函数有什么作用?

error_reporting() 用来配置错误信息汇报的等级. 相关用法: error_reporting(0); ini_set('error_reporting', E_ALL);

PHP插入header('content-type:text/html;charset="utf-8')和error_reporting()

1.header PHP文件插入header("Content-type: text/html; charset=utf-8");相当于页面里面的<meta http-equiv="Content-Type" content="text/html; charset=utf-8">;目的:防止页面出现乱码 2.error_reporting 定义和用法:error_reporting()设置PHP的报错级别并返回当前级别.函数语法:er

setTimeout这个大坑,我填好了,啊哈哈!

在一次工作中碰到setTimeout的一个大坑,在用setTimeout进行延时执行一个函数的时候,由于该函数需要传参,所以把它写成了 setTimeout(fn(data),1000) ,详细如下代码: function hello(id){ alert(id); } setTimeout(hello("username"),3000) 结果函数立即执行了,根本没有延时,很费解,查了下资料,知道setTimeout的正确写法是setTimeout(fn,3000)或者setTimeo

文件操作中的几个大坑

在程序开发中你经常会碰到很多关于路径的问题的.比如读取文件,写文件等,你必要传一个文件的路径.然而你也许常常碰到这样的问题:逻辑是对的,但就出不来你想要的结果.这是为什么呢?因为对于文件操作的路径问题,有很多你稍不慎就会掉入的大坑. 说几个掉进大坑的惨痛经历 编译一个C++的工程,工程中要用到cmake工具,而cmake安装在C:\Program Files (x86)\cmake2.8(程序默认安装时,安装到这个目录是很正常不是吗).然而问题来了,工程怎么编不过,报一个很诡异的异常: Micr

Python 3 函数自由变量的大坑

Python中函数是一个对象, 和整数,字符串等对象有很多相似之处,例如可以作为其他函数的参数或返回对象, Python中的函数还可以携带自由变量, 两者无疑极大增进了Python的表达力. 但是Python函数自由变量的内部机制和列表解析或for循环结合使用时却暗藏杀机: #---CASE 1 fs = map(lambda i:(lambda j: i*j),range(6)) print([f(2) for f in fs]) #---CASE 2 fs = [lambda j:i*j f

近20家银行手机银行签名被非法滥用风险分析

近日百度安全实验室在手机银行正版信息提取时,发现有一个数字证书签名(签名信息如图1)被很多银行的手机客户端所使用.与此同时还发现了几款个人开发者类应用也使用了此证书签名.而这种数字签名被滥用的行为存在极大的安全隐患. 图1. 签名信息 经挖掘和分析,研究人员发现目前共有23款不同银行手机银行客户端使用该签名: 以上不同银行的手机客户端应用都是外包给某第三方公司开发的. 在应用市场内,目前共发现6款个人开发的应用同时使用该数字证书签名: 这六款手机客户端为同一个人开发者,推断该个人开发者应该为"某

silverlight开发游戏中的大坑

最初做<金X>使用silverlight是因为看了深蓝色的右手的silverlight游戏开发教程,这里赞一下,教程写的非常好!做游戏的基础思想均涵盖了,能够给游戏开发的新手提供很多思维方式上的引导. 但是在我个人开发.发布金X的过程中,陆续发现有一些silverlight的大坑,这里给大家分享一下,防止大家犯重复错误. 1.DateTime数据结构的处理 在游戏中,如果想使用DateTime数据结果来存时间的话,一定要慎用DateTime.ToString和DateTime.Parse方法.

error_reporting - PHP

error_reporting(report_level) 可设置PHP错误报警级别也可返回当前所设置的级别 error_reporting(0);// 关闭所有错误报警 // 开启error.warning及parse的错误报警 error_reporting(E_ERROR | E_WARNING | E_PARSE); error_reporting(E_ALL & ~E_NOTICE); error_reporting(E_ALL ^ E_NOTICE); // 打开除notice以外的