zoukankan      html  css  js  c++  java
  • PHP 错误与异常 笔记与总结(3)PHP 配置文件(php.ini)中与错误相关的选项 与 设置错误级别

    【PHP 配置文件中与错误相关的选项 】

    选项 描述
    error_reporting 设置错误报告的级别
    display_errors 是否显示错误
    log_errors 设置是否将错误信息记录到日志或者 error_log 中
    error_log   设置脚本错误将记录到的文件
    log_errors_max_len 设置 log_errors 的最大字节数
    ignore_repeated_errors 是否忽略重复的错误信息
    ignore_repeated_source 是否忽略重复错误消息的来源
    track_errors 如果开启此选项,最后一个错误将永久保存在$php_errormsg 中

    error_reporting

    例如:

    error_reporting = E_ALL 

    代表错误级别是所有错误。还可以设置为该语句上文中提到的所有错误级别,。

    注:php 5.4以上版本中,E_STRICT 就属于 E_ALL 中的一部分。

    这些错误级别可以单独使用,也可以配合位运算符结合使用。

    【例】显示所有错误,但是不显示 notice,php.ini 中的 error_reporting 应该设置为:

    error_reporting = E_ALL & ~E_NOTICE

    display_error

    开发环境需要打开(display_errors = On),生产环境(线上)需要关闭(diaplay_errors = Off)。

    【设置错误级别】

    ① 通过 PHP 配置文件设置(以上都是这种方式)

    ② 通过 error_reporting() 函数设置(动态设置)

    【例1】得到当前错误级别的位掩码

    <?php
    echo error_reporting();

    输出:

    30719

    (对应的 error_reporting = E_ALL)

    【例2】设置错误级别—— 显示所有错误

    <?php
    error_reporting(E_ALL);

    【例3】不显示通知级别的错误

    <?php
    error_reporting(E_ALL & ~E_NOTICE);
    echo $dee;

    输出:

    什么都不输出。

    【例4】屏蔽所有错误 —— 部署到线上时,可以通过这种方法设置错误级别,防止信息泄漏给用户

    <?php
    error_reporting(0);
    echo dee(); //致命级别的错误

    输出:

    什么都不输出 —— 即使是致命级别的错误(Fatal 级别)也不现实,但解析错误(语法检测阶段)仍然会显示,如例5

    【例5】

    <?php
    error_reporting(0);
    echo dee()

    输出:

    ( ! ) Parse error: syntax error, unexpected $end, expecting ',' or ';' in D:practisephpErrorerror1.php on line 3

    【例6】显示所有错误

    <?php
    error_reporting(-1);
    echo dee();

    输出:

    ( ! ) Fatal error: Call to undefined function dee() in D:practisephpErrorerror1.php on line 3

      

    ③ 通过 ini_set() 函数运行时设置

    【例1】不显示所有错误

    <?php
    ini_set('error_reporting', 0);
    echo dee();

    输出:

    什么都不输出。

    或者

    <?php
    ini_set('display_errors', 0);
    echo dee();

    也能达到不显示所有错误的效果。

    【例2】显示所有错误

    <?php
    ini_set('error_reporting', -1);
    echo dee();

    输出:

    ( ! ) Fatal error: Call to undefined function dee() in D:practisephpErrorerror1.php on line 3

    【常用设置】

    在php.ini 中可以对 error_reporting 进行如下设置,以屏蔽我们认为不是错误的提示:

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

    或者在发送 header 之前,把所有的内容输出到内存缓冲中(output buffering)。

    【附】① 位运算符

    ② php 5.4 以上版本官方推荐使用 mysqli 代替 mysql

  • 相关阅读:
    执行 composer --version 命令的时候报 Your requirements could not be resolved to an installable set of packages. 错误
    Mac 解决每次新建终端 都要重新运行 source ~/.bash_profile问题
    mac 文件根据权限展示颜色
    Unable to negotiate with 180.101.**.*** port 22: no matching cipher found. Their offer: 3des-cbc,blowfish-cbc,arcfour,cast128-cbc,aes128-cbc,aes192-cbc,aes256-cbc
    带有git账户名称密码更改git推送拉取地址
    使用Java,实现图片与Base64编码互转的程序
    Spring事务管理:ACID的概念,Spring事务管理核心接口,基于XML方式的声明式事务、基于注解(Annotation)方式的声明式事务
    Spring,JDBC, JdbcTemplate的常用方法
    Spring,AOP,基于注解声明式ApsectJ
    养猫记
  • 原文地址:https://www.cnblogs.com/dee0912/p/4510596.html
Copyright © 2011-2022 走看看