PHP错误报告级别及调整方法
运行PHP脚本时,PHP解析器会尽其所能能报告它遇到的问题。在PHP中错误报告的处理行为,都是通过PHP的配置文件php.ini中有关的配置指令确定的。另外PHP的错误报告有很多种级别,可以根据不同的错误报告级别提供对应的调试方法。一旦把PHP设置成呈现出发生了哪些错误,你可能想调整错误报告的级别。在下表中列出了PHP中大多数的错误报告级别。

如果开发人员希望在PHP脚本中,遇到表中的某个级别的错误时,将错误消息报告给他,则必须在配置文件php.ini中,将display_errors指令的值设置为On,开启PHP输出错误报告的功能。也可以在PHP脚本中调用ini_set()函数,动态设置配置文件php.ini中的某个指令。(注意:如果display_errors被启用,就会现实满足已设置的错误级别的所有错误报告。当用户访问网站时,看到现实的这些消息不仅会赶到迷惑,而且还可能会过多的泄漏有关服务器的信息,使服务器变得很不安全。所以在项目开发或测试期间启用此指令,可以根据不同的错误报告更好地调试程序。出于安全性和美感的目的,在网站投入使用时要将其禁用)。
当你正在开发站点时,会希望PHP报告特定类型的错误,可以通过调整错误报告的级别实现。可以通过以下两种方法设置错误报告级别。
★可以通过在配置文件php.ini中,修改配置指令error_reporting的值,修改成功后重新启动Web服务器,则每个PHP脚本都可以按调整后的错误级别输出错误报告。下面是修改php.ini配置文件的示例,列出几种为error_reporting指令设置不同级别值的方式,可以把位运算符[&(与)、|(或)|(非)]和错误级别常量一起使用。如下所示:

★或者可以在PHP脚本中使用error_reporting()函数,基于各个脚本来调整这种行为。这个函数用于确定PHP应该在特定的页面内报告哪些类型的错误。该函数获取一个数字或上表中错误级别常量作为参数。如下所示:
error_reporting(0); //设置为0会完全关闭错误报告
error_reporting(E_ALL); //将会向PHP报告发生的每个错误
erroro_reporting(E_ALL & ~E_NOTICE); //可以抛出任何非注意的错误报告
在下面的示例中,我们在PHP脚本中分别创建一个“注意”、一个“警告”和一个致命“错误”。并通过设置不同的错误级别,限制程序输出没有被允许的错误报告。创建一个名为error.php的脚本文件,代码如下所示:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
<html><head><title>测试错误报告</title></head><body><h2>测试错误报告</h2><?php//开启php.ini中的display_errors指令,只有该指令可以开启如果有错误报告才能输出ini_set('display_errors',1);//通过error_reporting()函数设置在本脚本中,输出所有级别的错误报告error_reporting(E_ALL);//注意(notice)的报告,不会组织脚本的执行,但是不会组织脚本的执行,并且可能不一定是一个问题getType($var); //调用函数时提供的参数变量没有在之前声明//警告(warning)的报告,指示一个问题,但是不会组织脚本的执行getType(); //调用函数时没有提供必要的参数get_Type(); //调用一个没有被定义的函数?></body></html> |
在上面的脚本中,为了确保配置文件中的display_errors指令开启,通过ini_set()函数强制在该脚本执行中启动,并通过error_repoting()函数设置错误级别为E_ALL,报告所有错误、警告和错误,PHP脚本只有在遇到错误时才会终止运行。
“注意”和“警告”的错误报告并不会终止程序运行。如果在上面的输出结果中,不希望有注意和警告的报告输出,就可以在脚本error_reporting()函数,修改的代码如下所示:
error.php中修改error_reporting(E_ALL&~(E_WARNING|E_NOTICE)); //报告除注意和警告之外的所有错误
除了使用error_reporting 和display_error两个配置指令可以修改错误报告行为以外,还有许多配置指令可以确定PHP的错误报告行为。其他的一些重要指令如下表所示:
使用trigger_error()函数来替代die()
首先函数die()等同于exit(),两者如果执行都会终止PHP程序,而且可以在退出程序之前输出一些错误报告。trigger_error()则可以生成一个用户警告来代替,使程序更具有灵活性。例如,trigger_error(“没有找到文件”,E_USER_ERROR)。使用trigger_error()函数来代替die(),你的代码在处理错误上会更具优势,对于客户程序员来说更易于处理错误。
PHP错误报告级别及调整方法的更多相关文章
- 调整CodeIgniter错误报告级别
修改位置:CI根目录 index.php 为开发环境与生产环境定义错误报告级别 if (defined('ENVIRONMENT')) { switch (ENVIRONMENT) { case 'd ...
- PHP中如何设置error_reporting错误报告级别
错误报告级别:指定了在什么情况下,脚本代码中的错误(这里的错误是广义的错误,包括E_NOTICE注意.E_WARNING警告.E_ERROR致命错误等)会以错误报告的形式输出. 设置错误报告级别的 ...
- PHP 开启错误显示并设置错误报告级别
警告:生产环境永远都不要显示任何错误信息! 显示错误(display_errors)和错误报告(error_reporting)是两回事.PHP 脚本发生错误时,可以根据设置选择是否报告这个错误(记录 ...
- PHP错误报告级别
error_reporting = E_ALL & ~E_NOTICE ; 错误报告级别是位字段的叠加,推荐使用 E_ALL | E_STRICT ; 1 E_ERROR 致命的运行时错误 ; ...
- 关于PHP.INI中的错误ERROR报告级别设置
最近在写php的过程中发现php提示php notice:………………的字样,虽然这个只是php的提示内容,并没有什么大的影响,但是出于安全性和美观方面的考虑,小弟还是想把这个东西去掉. 那么,怎么办 ...
- Nginx常见错误与问题之解决方法技术指南
Nginx常见错误与问题之解决方法技术指南. 安装环境: 系统环境:redhat enterprise 6.5 64bit 1.Nginx 常见启动错误 有的时候初次安装nginx的时候会报这样的 ...
- 【转】第4篇:Xilium CefGlue 关于 CLR Object 与 JS 交互类库封装报告:委托回调方法分析
作者: 牛A与牛C之间 时间: 2013-11-18 分类: 技术文章 | 暂无评论 | 编辑文章 主页 » 技术文章 » 第4篇:Xilium CefGlue 关于 CLR Object 与 JS ...
- 【转】3篇:Xilium CefGlue 关于 CLR Object 与 JS 交互类库封装报告:官方原生方法分析
作者: 牛A与牛C之间 时间: 2013-11-17 分类: 技术文章 | 暂无评论 | 编辑文章 主页 » 技术文章 » 第3篇:Xilium CefGlue 关于 CLR Object 与 JS ...
- php错误报告和调试
3. 错误报告和调试 常常犯的一个错误是忘记关闭 PHP 错误和数据库错误报告,这样做是有风险的.在任何一个公开的站点,error_reporting 应该设置为0 ,最多只能设置为 E_ERROR, ...
随机推荐
- Sentry Server 日志记录分析服务
原文地址:http://blog.shanbay.com/archives/998 或许你不太会喜欢异常,特别是那些发生后继而沉默在应用日志里那些,你不知道从何开始,因为它们看起来并非那么平易近人,但 ...
- 《University Calculus》-chaper13-向量场中的积分-线积分
线积分: 基于二重积分和三重积分的引入,我们对于线积分的引入过程将会轻车熟路. 对于一根不均匀密度的铜丝,我们如何求其总质量?如下图. 类似二重积分和三重积分的引入,我们首先基于实际问题给出黎曼和的形 ...
- Wireshark 基本介绍和学习 TCP 三次握手
这篇文章介绍另一个好用的抓包工具 Wireshark, 用来获取网络数据封包,包括 HTTP.TCP.UDP 等网络协议包. 记得大学的时候就学习过TCP的三次握手协议,那时候只是知道,虽然在书上看过 ...
- slides 带手势的图片滑动效果(用于移动终端)
slidesjs 是基于jQuery开发的一款功能强大,是简单的幻灯片插件,但是需要要应用于移动终端的话,还需要考虑手势滑动时候图片切换功能. 此次,我就在slidesjs基础上扩展了两个swipe属 ...
- 传智播客课程——Lucene搜索引擎
Lucene不是一个现成的程序,类似文件搜索程序或web网络爬行器或是一个网站的搜索引擎.Lucene是一个软件库,一个开发工具包,而不是一个具有完整特征的搜索应用程序.它本身只关注文本的索引和搜索. ...
- Fragment 回退栈 传递参数,点击切换图片使用Fragment ListView
Fragment回退栈 类似与Android系统为Activity维护一个任务栈,我们也可以通过Activity维护一个回退栈来保存每次Fragment事务发生的变化. 如果你将Fragment任务 ...
- eclipse设置系统字体
1. 打开eclipse-->Window-->Preferences-->General-->appearance-->Colors and Fonts, 点开后选择B ...
- js实现键盘操作对div的移动或改变-------Day43
<爸爸去哪儿>的第二季据说要开播了额,有点小期待,不知道这一季的小宝贝们会有多萌,还会甜到心底吧, 哈哈,还记得那个风一样的女子呢,不知道她如今怎样了. 言归正传,继续今天的记录,实际上在 ...
- [PWA] 1. Intro to Service worker
Service worker stays between our browser and noetwork requests. It can help to fetch data from cache ...
- MySQL的字符编码体系(二)——传输数据编码
MySQL的字符编码体系能够分成两部分:一部分是关于数据库server本身存储数据表时怎样管理字符数据的编码:还有一部分是关于client与数据库server数据传输怎样编码.上一篇MySQL的字符编 ...