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, ...
随机推荐
- HDOJ(HDU) 2178 猜数字(题意有点难理解、、、)
Problem Description A有1数m,B来猜.B每猜一次,A就说"太大","太小"或"对了" . 问B猜n次可以猜到的最大数. ...
- getting start with storm 翻译 第八章 part-2
转载请注明出处:http://blog.csdn.net/lonelytrooper/article/details/12435641 The Bolts 首先我们看一下该topology中的标准bo ...
- java项目使用Echarts 做柱状堆叠图,包含点击事件
基础知识请自行百度查看,以下直接贴出实现代码: <%@ page pageEncoding="UTF-8"%><!DOCTYPE html><html ...
- openresty安装lua和nginx相关
server{ listen ; server_name a.com; index index.php; root /usr/share/nginx/html; location / { if (!- ...
- .Net动态加载插件-反射
/// <summary> /// 动态加载插件 /// </summary> void LoadPlugin() { string[] ps = Directory.GetF ...
- [转]【基于zxing的编解码实战】精简Barcode Scanner篇
通过<[搞定条形码]zxing项目源码解读(2.3.0版本,Android部分)>的分析,现在可以实现最终目标了:精简Barcode Scanner并将其中的编码和解码分离为两个独立的部分 ...
- URL重写:RewriteCond指令与RewriteRule 指令格式(转)
Rewirte主要的功能就是实现URL的跳转和隐藏真实地址,基于Perl语言的正则表达式规范.平时帮助我们实现拟静态,拟目录,域名跳转,防止盗链等.本文将针对mod_rewrite和URL匹配的技术细 ...
- 专业DBA 遇到的问题集
http://blog.csdn.net/mchdba/article/category/1596355/3
- [转] 多线程下变量-gcc原子操作 __sync_fetch_and_add等
http://blog.sina.com.cn/s/blog_6f5b220601013zw3.html 非常好的原子操作,不用加锁:__sync_fetch_and_add GCC 提供的原子操作 ...
- C++ XML 解释库
rapidxml http://rapidxml.sourceforge.net/index.htm