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. Azure Event Hub 技术研究系列3-Event Hub接收事件

    上篇博文中,我们通过编程的方式介绍了如何将事件消息发送到Azure Event Hub: Azure Event Hub 技术研究系列2-发送事件到Event Hub 本篇文章中,我们继续:从Even ...

  2. [原创]MongoDB综合实例一

    CentOS-6.5单机实现mongoDB分片 环境:1)CentOS 6.5系统      2)IP:本机3)MongoDB:MongoDB-linux-x86_64-2.6.1 实现:两个副本集s ...

  3. Venn Diagram Comparison of Boruta, FSelectorRcpp and GLMnet Algorithms

    Feature selection is a process of extracting valuable features that have significant influence ondep ...

  4. Targeted Learning R Packages for Causal Inference and Machine Learning(转)

    Targeted learning methods build machine-learning-based estimators of parameters defined as features ...

  5. The dplyr package has been updated with new data manipulation commands for filters, joins and set operations.(转)

    dplyr 0.4.0 January 9, 2015 in Uncategorized I’m very pleased to announce that dplyr 0.4.0 is now av ...

  6. Oracle listener服务启动后又停止的解决方案

    这是Oracle监听服务.忘了说我的版本是Oracle10g. 我装完Oracle数据库之后,然后用第三方工具plsql去连接,提示no listener,首先我反复检查tnsnames.ora配置文 ...

  7. MySQL开放远程登录

    在服务器上部署MYSQL每次观看MYSQL记录或者修改的时候都需要登录服务器,又烦又占资源.所以使用另一种方法:对外开放接口. 注:如果某些服务器开启防火墙屏蔽了某些接口就有可能导致远程用户无法登录M ...

  8. 在Intellij Idea中使用JSTL标签库

    习惯了eclipse和myeclipse开发的我们总是依赖于系统的插件,而当我想当然的以为IntelliJ IDEA 的jstl 的使用应该和myeclispe一样,当时使用起来却到处碰壁,完全找不到 ...

  9. css3转盘抽奖

    做到一个活动,需要转盘抽奖,于是想到使用css3的动画效果,其中主要包含transition的动画过渡,transform的rotate的旋转效果,在这里只用到2d的旋转, 特别强调的是,因为需要和后 ...

  10. 如何实现windows命令提示符的tab补全

    1:使用win+r打开 运行 控制台 2:输入 regedit 打开注册表 3:进入HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Command Processor\Co ...