PHP从入门到精通

之PHP中的字符串

  在创建脚本和 web 应用程序时,错误处理是一个重要的部分。如果您的代码缺少错误检测编码,那么程序看上去很不专业,也为安全风险敞开了大门。

本教程介绍了 PHP 中一些最为重要的错误检测方法。

  我为大家讲解不同的错误处理方法:

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;

本期分享就到这里,下期再见。觉得内容对你有所帮助的朋友请点推荐,欢迎大家在评论下方评论区与博主互动,谢谢大家!

未完,待续。。。

更多精彩内容,敬请关注 Q的前端世界的技术博客。

【PHP】最详细PHP从入门到精通(五)——PHP错误处理的更多相关文章

  1. 【PHP】最详细PHP从入门到精通(二)——PHP中的函数

     PHP从入门到精通 之PHP中的函数 各位开发者朋友大家好,自上次更新PHP的相关知识,得到了大家的广泛支持.PHP的火爆程度不言而喻,函数作为PHP中极为重要的部分,应诸位的支持,博主继续跟进更新 ...

  2. 【PHP】最详细PHP从入门到精通(三)——PHP中的数组

     PHP从入门到精通 之PHP中的数组 各位开发者朋友大家好,链接上次更新,我们PHP的学习也更深了一层,本次博主给大家带来PHP数组的数组实例详解的相关资料.数组分为数组数值数值,关联数组,多维数组 ...

  3. 【PHP】最详细PHP从入门到精通(三)——PHP中的数组常用函数汇总

     PHP从入门到精通 之PHP中的数组常用函数详解 数组作为PHP中最常用的结构之一,PHP强大的数组函数功能,给数组的相关操作带来了极大的便利.今天给大家介绍的PHP中数组函数,是PHP数组中重要的 ...

  4. 【PHP】最详细PHP从入门到精通(四)——PHP中的字符串

     PHP从入门到精通 之PHP中的字符串 大家好,继续跟进PHP最详尽的知识更新,本周,跟大家重点讲一下PHP中字符串的使用.在PHP中,字符串是非常重要的一个概念,基本上大家想到的字符串的处理功能, ...

  5. 【PHP】最详细PHP从入门到精通(一)——想学习PHP的朋友们福利来了!

     PHP从入门到精通 (一)PHP简介和基本知识 PHP(外文名:PHP: Hypertext Preprocessor,中文名:“超文本预处理器”)是一种通用开源脚本语言.语法吸收了C语言.Java ...

  6. Python运算符,python入门到精通[五]

    运算符用于执行程序代码运算,会针对一个以上操作数项目来进行运算.例如:2+3,其操作数是2和3,而运算符则是“+”.在计算器语言中运算符大致可以分为5种类型:算术运算符.连接运算符.关系运算符.赋值运 ...

  7. MyBatis从入门到精通(五):MyBatis 注解方式的基本用法

    最近在读刘增辉老师所著的<MyBatis从入门到精通>一书,很有收获,于是将自己学习的过程以博客形式输出,如有错误,欢迎指正,如帮助到你,不胜荣幸! 1. @Select 注解 1.1 使 ...

  8. git详细使用教程入门到精通(史上最全的git教程)

    Git是分布式版本控制系统,那么它就没有中央服务器的,每个人的电脑就是一个完整的版本库,这样,工作的时候就不 需要联网了,因为版本都是在自己的电脑上.既然每个人的电脑都有一个完整的版本库,那多个人如何 ...

  9. iOS开发-UI 从入门到精通(五)

    近日在做项目的时候,为了快捷适配屏幕采用了Storyboard,添加约束以后运行后发现一个问题(下面将以普通案例展示该问题);在4.7 甚至更大的屏幕下是没有问题的,如下图(4.7屏幕): 但是放到更 ...

随机推荐

  1. Ajax01 什么是ajax、获取ajax对象、ajax对象的属性和方法

    1 什么是ajax ajax是一种用来改善用户体验的技术,其本质是利用浏览器提供的一个对象(XMLHttpRequest,也可称之为ajax对象) 向服务器发送异步请求;服务器返回部分数据(不是一个完 ...

  2. 028hibernate缓存(性能优化策略)

    一级缓存 二级缓存 查询缓存 缓存是为了提高性能 变化不是很大,相对静态的对象放入缓存 对象的创建比较耗时

  3. Java如何转换protobuf-net中的bcl.DateTime对象

    一.定义DateTime Message 参考文档:https://github.com/mgravell/protobuf-net/blob/master/src/Tools/bcl.proto m ...

  4. nodeJS之路径PATH模块

    前面的话 path模块包含一系列处理和转换文件路径的工具集,通过 require('path') 可用来访问这个模块.本文将详细介绍path模块 路径组成 [path.dirname(p)] 返回路径 ...

  5. Python教程(1.1)——配置Python环境

    在正式开始学习Python之前我们需要先配置好Python环境. Python Python可以从Python官方网站上,选择适合你的操作系统的版本下载.下载完之后,运行下载的可执行文件进行安装. 这 ...

  6. Java阶段性测试--第四五六大题参考代码

    第四题:.此题要求用IO流完成 使用File类在D盘下创建目录myFiles, 并在myFiles目录下创建三个文件分别为:info1.txt, info2.txt, info3.txt . 代码: ...

  7. springmvc环境下使用ajaxfileupload.js进行文件上传

    controller: /* #region */ @RequestMapping(produces = "text/html;charset=UTF-8", value = &q ...

  8. ANDROID 开发,安装离线安装包的下载地址及安装方法。

    前言: 建议采用离线安装的方法安装SDK包,在线的方式实在是.....多了不解释. 下面说一下离线安装的方法: 1.下载地址:http://pan.baidu.com/s/1sjuJwYD#path= ...

  9. [1] Ninject

    为什么使用这种依赖注入的框架呢?我借鉴两张图做一下说明 传统的接口方式,即 IValueCalculator I=new LinqValueCalculator,虽然用接口做的隔离,但是在调用的时候实 ...

  10. postgresql初体验

    docker pull orchardup/postgresql docker run -d -p 5432:5432 -e POSTGRESQL_USER=test -e POSTGRESQL_PA ...