美文网首页
PHP错误与异常处理(一)

PHP错误与异常处理(一)

作者: 蓝洛333 | 来源:发表于2021-02-28 12:08 被阅读0次

错误与异常的概念

PHP错误:是属于php程序自身的问题,一般是由非法的语法,环境问题导致的,使得编译器无法通过检查,甚至无法运行的情况。平时遇到的warming、notice都是错误,只是级别不同而已。

PHP异常:一般是业务逻辑上不合预期、与正常流程不同的状况,不是语法错误。

下面我们来看看PHP中的错误级别:

设置错误级别 

一.错误级别可以在php.ini的error_reporting里设置,如果是想显示除了notice以外所有的错误级,则可以设置成:error_reporting=E_ALL&~E_NOTICE。其中,配置项里还有有个display_errors,如果把它设置为off,则页面上即使有错误,也不会显示出来。

二.当然,在我们的实际开发中,一般情况的话我们可以在php的程序中进行设置。例如在程序中输入error_reporting(0);就表示屏蔽所有错误,也就是所有的错误都不会再页面显示出来(不包括解析错误),error_reporting(-1);就表示显示所有错误。如果想显示除了notice以外所有的错误级,也可以在程序中做设置: error_reporting(E_ALL&~E_NOTICE)。

三.我们也可以使用ini_set()来进行运行时设置配置选项的值。例如:ini_set(‘error_reporting’,0)来设置不开启所有的错误(不包括解析错误),ini_set(‘error_reporting’,-1)来设置开启所有的错误级别。如果设置ini_ser(‘display_errors’,0)来设置显示的话,不管错误级别进行了怎样的设置,都不会再页面上显示错误。

PHP配置文件中与错误日志相关的选项将错误日志存到指定文件中 

一、我们可以通过在php的配置文件中(php.ini)找到log_errors将其值设为on,进行开启。然后找到error_log,将错误日志指定到某个文件下。例如(E:/PHP/error/error.log)。 

   二、我们也可以在PHP程序中进行动态开启,代码如下:

ini_set('display_errors','off');//关闭错误显示,不让客户看到错误信息

ini_set('error_log','E:\php39\impover\error.log');

error_reporting(-1);//开启所有的错误级别

echo $test;//输出没有值的数

echo '';

error();//调用未定义的函数

?>

然后在指定的文件夹下会多了一个error.log的文件,点开,出现如下的信息:

三、我们也可以把错误日志也存储到系统中,代码如下:

/**

* 把错误日志存储到系统中

*/

ini_set('display_errors',0);

ini_set('log_errors',1);//开启错误日志

ini_set('error_log','syslog');//把错误日志存储到系统中

error();//调用一个不存在的函数,报错。

?>

运行上面代码之后,我们鼠标右键计算机——》管理——》事件查看器——》信息,找到PHP-5.6.30(如果使用的php版本不是这个,就会显示相应的php版本),查看结果。

下面写一个事例,用在某些人进行各种尝试以能够登录admin

HTML的代码如下:

登录系统

用户名:

密码:

PHP的代码如下: 

/**

* 记录错误信息,检查是否有人进行各种尝试进行admin信息的登录

*/

ini_set('diaplay_errors',1);//显示所有的错误信息

error_reporting(-1);//开启所有的错误级别

ini_set('log_errors','on');//开启错误日志

ini_set('error_log','E:\php39\impover\adminLogin.log');//错误日志文件地址

ini_set('ignore_repeated_errors','on');//忽略重复的错误信息

ini_set('ignore_repeated_source','on');//忽略重复错误信息的来源

$username = $_POST['username'];

$password = $_POST['password'];

if($username=='admin'&& $password=='root'){

echo 'ok';

}else{

$date = date('Y-m-d H:i:s',time());

$ip = $_SERVER['REMOTE_ADDR'];//获取ip

$message = "用户{$username}在{$date}以密码{$password}尝试登录系统,IP为{$ip}";

error_log($message);//写入错误信息

header('Location:test.html');

}

?>

尝试2次故意的错误登录之后,错误日志如下:

相关文章

  • PHP异常、错误处理机制笔记

    本文介绍PHP的异常,错误以及如何屏蔽错误。参考:php异常、错误处理机制、PHP错误提示的关闭方法详解 首先要明...

  • PHP错误与异常处理(一)

    错误与异常的概念 PHP错误:是属于php程序自身的问题,一般是由非法的语法,环境问题导致的,使得编译器无法通过检...

  • PHP错误与异常处理

    请一定要注意,没有特殊说明:本例 ****PHP Version < 7说起PHP异常处理,大家首先会想到try-...

  • PHP基础学习之路(3)

    这一次学习php的错误处理和异常处理主要介绍常见的错误和异常 常见错误 1.拼写错误 PHP中的常量和变量都是区别...

  • 10.2.1 PHP异常处理1

    10.2.1 PHP异常处理1 异常(Exception)处理用于在指定的错误发生时改变脚本的正常流程。是PHP5...

  • 10.2.2 PHP异常处理2

    10.2.2 PHP异常处理2 异常(Exception)处理用于在指定的错误发生时改变脚本的正常流程。是PHP5...

  • php错误与异常处理方法

    php与其他计算机编程语言在遇到错误就抛出异常不太一样,PHP在处理对象时它也有异常机制,但是PHP会尽可能的愉快...

  • PHP错误与异常处理(三)

    异常 概念:程序运行与我们预期的不一致。一般会使用try{}catch(Exception $e){}来进行异常处...

  • PHP错误与异常处理(四)

    set_execption_handler set_exception_handler ( callable $e...

  • PHP错误与异常处理(二)

    自定义错误处理器 我们写程序,难免会有问题(是经常会遇到问题),而PHP遇到错误时,就会给出出错脚本的位置、行数和...

网友评论

      本文标题:PHP错误与异常处理(一)

      本文链接:https://www.haomeiwen.com/subject/jslgfltx.html