PHP中的错误处理

1、PHP的错误级别:见表格。
2、调整PHP错误报告级别:
PHP中,调整错误报告级别的方式有两种:
①修改PHP.ini文件的配置项。
a、会导致在当前服务器环境下所有PHP文件都受其影响。
b、如果代码更换服务器,会导致配置文件全部失效,需要重新配置。
所以实际开发过程中,并不推荐使用此方式!!
②在代码中使用ini_set()函数,动态的修改php.ini文件的配置项;(get为获取配置项)

>>>php.ini中的两个重要配置项:
①display_errors:开启或关闭所有错误级别报告;
可选值:1/On表示开启所有错误报告功能; 0/Off表示关闭所有报告;
默认开启,而且强烈建议开启!!

代码实例:

ini_set("display_errors","0");---->关闭错误报告功能;

②error_reporting:设置那些错误可以进行报告;
有两个函数可以设置:ini_set()和error_reporting;

代码示例:

ini_set("error_reporting",E_ALL);报告所有级别;
error_reporting("E_ALL & ~E_NOTICE");不报告notice级别,其他均正常报告;

3、使用错误日志,记录出现的错误;
①使用日志文件记录:
使用error_log()函数将错误信息输出到日志文件中。默认的日志文件在wamp中的log文件夹下,php_error.log文件;
>>>自定义日志文件打印错误:

代码示例:

ini_set("error_log","E:/text.txt");//设置日志文件地址;
error_log("出错了!!!");//打印一句错误信息; error_log("这是一个PHP错误",3,"E:/textLog.text");//直接将错误信息打印到指定文件中;

②写进Windows系统日志中:

代码示例:

ini_set("error_log", "syslog");//设置日志记录到系统日志;
error_log("系统日志出错");//使用日志报错时,将自动进入系统日志;

4、trigger_error:自定义一个错误;会像系统错误一样。产生报错。
参数①:错误的信息内容;
参数②:错误的级别。常选E_USER_NOTICE E_USER_WARRING E_USER_ERRORS;

5、自定义错误处理函数:
①声明一个错误处理函数function func(){}
②使用set_error_handler("func");设置,当文件出现错误时,不再使用系统自带的错误提示功能,而是调用我们自定义的函数。
>>>set_error_handler在除法函数时,会默认想函数发送四个参数:分别是:错误的级别、信息、文件、所在行号;
所以可以在声明函数时,接受错误信息,具体处理。

实例展示:

ini_set("display_errors", 1);
$errMessage="";
function errorHandler($type,$message,$file,$line){
global $errMessage;
switch ($type) {
case E_NOTICE:
$errMessage .= "发生了没有什么卵用的小bug,就不用处理了<br><br>";
break;
case E_WARNING:
$errMessage .= "出错啦!!!";
$errMessage .= "错误类型是:{$type}";
$errMessage .= "错误信息是:{$message}";
$errMessage .= "错误发生的文件是:{$file}";
$errMessage .= "错误发生的行号是:{$line}";
$errMessage .= "<br><br>";
break;
case E_ERROR:
echo "<script>";
echo "location.href='../01text.php'";
echo "</script>";
break;
default:
echo "<script>";
echo "location.href='../01text.php'";
echo "</script>";
break;
} }
set_error_handler("errorHandler"); //ini_set("error_reporting",E_ALL);
//error_reporting(E_ALL & ~E_NOTICE);
ini_set("error_log", "syslog");
error_log("这是一个PHP错误",3,"E:/textLog.text");
echo $num;
//trigger_error("22222222",E_USER_NOTICE);//自定义一个错误,上述函数未接受,因此会进入default;
echo "11111";
echo "</br>-------------------------------------------------</br>";
echo $errMessage;

PHP从入门到精通(六)的更多相关文章

  1. MyBatis从入门到精通(六):MyBatis动态Sql之if标签的用法

    最近在读刘增辉老师所著的<MyBatis从入门到精通>一书,很有收获,于是将自己学习的过程以博客形式输出,如有错误,欢迎指正,如帮助到你,不胜荣幸! 本篇博客主要讲解如何使用if标签生成动 ...

  2. Atom编辑器入门到精通(六) Markdown支持

    尽管我们使用Atom主要是为了编写代码,不过Atom还支持编辑很多其他格式的文件. 比如Markdown和Asciidoc. 这一章中我们主要学习如何快速方便地编辑Markdown文件.另外在写这篇博 ...

  3. Spring Boot从入门到精通(六)集成Redis实现缓存机制

    Redis(Remote Dictionary Server ),即远程字典服务,是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库,并提供多种语言 ...

  4. Hibernate从入门到精通(六)一对一双向关联映射

    在上次的博文Hibernate从入门到精通(五)一对一单向关联映射中我们讲解了一下一对一单向关联映射,这次我们继续讲解一下与之对应的一对一双向关联映射. 一对一双向关联 与一对一单向关联映射所不同的的 ...

  5. Selenium 入门到精通系列:六

    Selenium 入门到精通系列 PS:Checkbox方法 例子 HTML: <html> <head> <title>测试页面</title> &l ...

  6. Jmeter(十六) - 从入门到精通 - JMeter前置处理器(详解教程)

    1.简介 前置处理器是在发出“取样器请求”之前执行一些操作.如果将前置处理器附加到取样器元件,则它将在该取样器元件运行之前执行.前置处理器最常用于在取样器请求运行前修改其设置,或更新未从响应文本中提取 ...

  7. iOS开发-UI 从入门到精通(二)

    iOS开发-UI 从入门到精通(二)是对 iOS开发-UI 从入门到精通(一)知识点的巩固,主要以习题练习为主,增强实战经验,为以后做开发打下坚实的基础! ※开发环境和注意事项: 1.前期iOS-UI ...

  8. Python基本语法[二],python入门到精通[四]

    在上一篇博客Python基本语法,python入门到精通[二]已经为大家简单介绍了一下python的基本语法,上一篇博客的基本语法只是一个预览版的,目的是让大家对python的基本语法有个大概的了解. ...

  9. 学java入门到精通,不得不看的15本书

    学java入门到精通,不得不看的15本书 一.Java编程入门类1.<Java编程思想>2.<Agile Java>中文版 二.Java编程进阶类1.<重构 改善既有代码 ...

随机推荐

  1. python+mongodb+flask的基本使用

    最近在做一个设备管理系统的后端,需要用python结合mongodb来实现,查了一下flask框架是比较合适的,自己摸索了好久一步步慢慢实现基本功能. 在程序开始之前请确保mongodb服务是开启的, ...

  2. MySQL基本简单操作03

    MySQL基本简单操作 现在我创建了一个数据表,表的内容如下: mysql> select * from gubeiqing_table; +----------+-----+ | name | ...

  3. bootstrap table使用及遇到的问题

    本人前端菜鸟一枚,最近使用bootstrap table实现表格,记录一下以便日后翻阅,废话不多说,先看效果图: 1.首先说下要实现该效果需要添加的css样式及所需的js文件,具体下载地址就不粘贴了( ...

  4. 关于使用jquery修改hover伪标签的样式

    HTML如下: <div class=".nav-subitem"> <div classs="nav-subitem-link">标题 ...

  5. Oracle11g链接提示未“在本地计算机注册“OraOLEDB.Oracle”解决方法

    当 用,Provider=OraOLEDB.Oracle方式访问ORACLE11g数据库.出现 未在本地计算机注册“OraOLEDB.Oracle”提供程序提示.解决方案如下: 客户端环境:Win7 ...

  6. eclipse+tomcat测试连接时候HTTP Status 404错误

    想要在eclipse里部署tomcat,结果tomcat单独可以通过连接测试,用eclipse就404了 404肯定都是目录不对,试了半天在eclipse下改了一下配置和文件位置就行了 1.先在菜单栏 ...

  7. Laravel小项目之第4节 Laravel-通过表单实现新增及操作状态提示功能

    第4节 Laravel-通过表单实现新增及操作状态提示功能 4.1 显示新增表单视图 4.2 通过模型实现新增 4.3 操作状态提示 4.1 显示新增表单视图 修改边栏的链接 \resources\v ...

  8. enq: FB - contention

    Troubleshooting 'enq: FB - contention' Format Block Enqueues. (Doc ID 1379986.1) In this DocumentPur ...

  9. 【opatch打补丁】oracle10.2.0.5.0升级10.2.0.5.9 for linux

    https://wenku.baidu.com/view/c38702b56edb6f1afe001f59.html    这篇文章也不错,可参考 任务:oracle 10.2.0.5.0 打补丁升级 ...

  10. E325: ATTENTION

    vim/vi编辑器异常 E325: ATTENTION Found a swap file by the name "/usr/local/msmtp/etc/.msmtprc.swp&qu ...