• PHP错误处理


    PHP错误处理

    配置错误显示状态

    display_errors

    php.ini配置文件中。我们可以控制php的错误显示状态。php.ini中有一个专门的配置项:

    display_errors

    这个选项设置是否将错误信息输出到网页,或者对用户隐藏而不显示。

    这个值的状态为on 或者 off,也可以设值为1 或者0。

    display_error的值设为0或者off则不在页面中显示错误,如果设为1或者on则显示错误信息。

    问题:如果没有修改服务器php.ini的状态权限怎么办?

    可以使用ini_set。

    <?php
    
    ini_set('display_errors' , 0 );
    
    ?>

    上面的代码也相当于修改了php.ini中display_errors的值。不过,仅仅在当前php代码中生效

    问题:想取得php.ini的配置项状态怎么办?

    可以使用ini_get(参数项) 得到参数的值。

    演示例子:

    <?php
    
    echo '服务器中display_errors的状态为' . ini_get('display_errors');
    
    ?>

    注:修改完php.ini文件,需要重启服务器。

    php错误处理之错误报告级别

    【掌握级别的错误类型】 我们将最常用的错误分为了三种:

    错误类型

    说明

    E_ERROR

    错误,文件直接中断

    E_WARNING

    警告,问题比较严重。但是还会继续向下运行

    E_NOTICE

    提示,有些小问题不会影响到程序。常发生在项目未定义

    E_PARSE

    编译时语法解析错误。解析错误仅仅由分析器产生。

    E_ALL

    所有的错误

    E_STRICT

    启用PHP对代码的修改建议,以确保代码具有最佳的互操作性和向前兼容性。

    E_DEPRECATED

    启用后将会对在未来版本中可能无法正常工作的代码给出警告。

    在上面的几种类型中:

    error最严重,必须要解决。不然程序无法继续向下执行
    
    warning也很重要。通也必须要解决。如果明确的,故意的可以不用处理。
    
    notice 你可以不用管。但是在有些公司,项目标准特别高。在高标准要求的项目中也必须要解决。因为,notice会影响到PHP的执行效率。通常发生在函数未定义等。
    
    parse错误,是指语法错写错了,必须要解决,代表全部类型的所有错误。

    error_reporting参数

    1、 php.ini中error_reporting参数。如若error_reporting参数设置为0。整个PHP引擎发错误均不会显示、输出、记录。在下一章将要讲到的日志记录中,也不会记录。

    如果我们想显示所有错误可以写上:

    error_reporting = E_ALL

    想要显示所有错误但排除提示,可以将这个参数写为:

    error_reporting = E_ALL & ~ E_NOTICE

    显示所有错误,但排除提示、兼容性和未来兼容性。可写为:

    error_reporting = E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED

    2、在有些情况下我们无权限操作php.ini文件,又想要控制error_reporting怎么办呢?

    在运行的xxxx.php文件中开始处,我们可以使用error_reporting()函数达到目标。

    演示代码如下:

    <?php
    //关闭了所有的错误显示
    error_reporting(0);
    //显示所有错误
    //error_reporting(E_ALL);
    //显示所有错误,但不显示提示
    
    //error_reporting(E_ALL & ~ E_NOTICE);
    
    ?>

    php错误处理之错误记录日志

    错误日志收集系统

    在一些公司里面,有专门的日志收集系统。日志收集系统会在背后默默的帮你收集错误、警告、提示。也有些公司没有专门的日志收集系统,通过文件来服务器当中的运行日志。

    其中:PHP的错误,警告这些是必须要收信的。那么问题来了——不让用户看到,设置好错误报告级别好,如何将错误收集到日志系统中呢?

    这里有需要使用到php.ini的相关配置项。这两个配置项为:

    参数

    配置项

    说明

    log_errors

    on/off

    是否开启日志记录

    log_errors_max_len

    整型,默认1024

    单行错误最大记录长度

    error_log

    syslog或者指定路径

    错误日志记录在什么地方

    说明:

        1.在表格中的log_errors和log_errors_max_len非常好理解。

        2.而error_log 指定将错误存在什么路径上。配置项中的syslog可能有点不太好理解。syslog是指系统来记录。windows系统在电脑的日志收集器里面。linux默认在: /etc/syslog.conf

    [扩展] 了解知识点。若Linux系统启动或修改了日志收集。可能存储在第三方专用的日志收集服务器中。

    此外,PHP还为我们专门准备了一个自定义的错误日志函数:

    bool error_log ( string $错误消息 [, int $错误消息类型 = 0 [, string $存储目标]] )

    这个函数可以把错误信息发送到web服务器的错误日志,或者到一个文件里。

    常用的错误消息类型:

    错误消息类型

    说明

    0

    发送至默认的error_log指定位置

    1

    发送到指定的邮件位置

    3

    发送至指定的文件位置

    示例:

    <?php
    //无法连接到数据库服务器,直接记录到php.ini 中的error_log指定位置
    error_log("无法连接到数据库服务器");
    //可以发送邮件,但是php.ini必须配置过邮件系统
    error_log('可以用邮件报告错误,让运维人员半夜起床干活',1 ,'pig@php.cn');
    //记录在指定的位置
    error_log("我是一个错误哟", 3, "d:/test/my-errors.log");
    ?>
  • 相关阅读:
    Linux显示2015年日历表
    Linux显示系统日期
    Dialogs 对话框
    grid 属性
    VS2010 fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏 嵌入清单
    Perl Tk grid 布局
    Perl Tk pack布局示例
    Perl Tk grid布局管理器
    Perl DBI模块
    输入文本框模型
  • 原文地址:https://www.cnblogs.com/dazhu-secure/p/13736821.html
Copyright © 2020-2023  润新知