【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

例如:

  1. error_reporting = E_ALL

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

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

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

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

  1. error_reporting = E_ALL & ~E_NOTICE

display_error

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

【设置错误级别】

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

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

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

  1. <?php
  2. echo error_reporting();

输出:

30719

(对应的 error_reporting = E_ALL)

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

  1. <?php
  2. error_reporting(E_ALL);

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

  1. <?php
  2. error_reporting(E_ALL & ~E_NOTICE);
  3. echo $dee;

输出:

什么都不输出。

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

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

输出:

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

【例5】

  1. <?php
  2. error_reporting(0);
  3. echo dee()

输出:

  1. ( ! ) Parse error: syntax error, unexpected $end, expecting ',' or ';' in D:\practise\php\Error\error1.php on line 3

【例6】显示所有错误

  1. <?php
  2. error_reporting(-1);
  3. echo dee();

输出:

  1. ( ! ) Fatal error: Call to undefined function dee() in D:\practise\php\Error\error1.php on line 3

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

【例1】不显示所有错误

  1. <?php
  2. ini_set('error_reporting', 0);
  3. echo dee();

输出:

什么都不输出。

或者

  1. <?php
  2. ini_set('display_errors', 0);
  3. echo dee();

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

【例2】显示所有错误

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

输出:

  1. ( ! ) Fatal error: Call to undefined function dee() in D:\practise\php\Error\error1.php on line 3

【常用设置】

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

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

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

【附】① 位运算符

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

PHP 错误与异常 笔记与总结(3)PHP 配置文件(php.ini)中与错误相关的选项 与 设置错误级别的更多相关文章

  1. PHP 错误与异常 笔记与总结(10)错误处理器测试

    关联文件:myErrorHandler.php (上一篇) 先测试通知级别的错误的自定义处理: testErrorHandler.php <?php require_once 'myErrorH ...

  2. PHP 错误与异常 笔记与总结(7)将错误日志以邮件方式发送

    当系统发生了很严重的问题,需要立刻发送给管理员.可以通过 error_log() 将错误以邮件形式发送到邮箱. 在 php.ini 中设置: sendmail_from = 472323087@qq. ...

  3. PHP 错误与异常 笔记与总结(4)通过 trigger_error 触发 PHP 错误

    [错误抑制符@] 除了 php.ini 中 error_reporting 和 display_errors 的设置.error_reporting() 函数.ini_set() 函数 外,还可以使用 ...

  4. PHP 错误与异常 笔记与总结(8)自定义错误处理函数 set_error_handler()

    通过 Set_error_handler() 函数设置用户自定义的错误处理函数. 步骤: ① 创建错误处理函数 ② 设置不同级别调用函数 ③ Set_error_handler() 函数制定接管错误处 ...

  5. PHP 错误与异常 笔记与总结(6)将错误日志保存在系统日志中

    [将错误记录到系统日志中] 在 php.ini 中将 error_log 设置为: error_log = syslog 或者在运行时使用 ini_set() 函数设置. [例1] <?php ...

  6. PHP 错误与异常 笔记与总结(5)配置文件中与错误日志相关的选项 && 将错误记录到指定的文件中

    [记录错误(生产环境)] php.ini: ① 开启 / 关闭 错误日志功能 log_errors = On ② 设置 log_errors 的最大字节数 log_errors_max_len = 其 ...

  7. PHP 错误与异常 笔记与总结(2)错误(Fatal)

    (接上) d.Fatal error 致命级别的错误 —— 程序终止执行 [例7]调用一个未定义的方法 <?php echo md6('dee'); echo 'continue'; 输出: ( ...

  8. 配置完php.ini中的扩展库后,重启apache出现错误1067

    网上有很多解决办法,比如更改环境变量,重装apache等等,但没有一个是符合我的.最后发现只是犯了一个低级错误,因为是第一次配置php.ini中的扩展库,忘记配置扩展库的路径. 解决办法:需要先加上扩 ...

  9. PHP 错误与异常 笔记与总结(12 )异常

    ① 异常的概念:异常和错误的区别 PHP 部分借鉴了 C++ 和 JAVA 中的异常处理机制.PHP 中的异常是指 程序运行和预期不太一致,与错误是两个不同的概念. ② 异常的语法结构 [例1] &l ...

随机推荐

  1. 天使之城(codevs 2821)

    2821 天使之城  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 黄金 Gold 题解  查看运行结果     题目描述 Description 天使城有一个火车站,每辆火车 ...

  2. 【图文详解】scrapy爬虫与动态页面——爬取拉勾网职位信息(2)

    上次挖了一个坑,今天终于填上了,还记得之前我们做的拉勾爬虫吗?那时我们实现了一页的爬取,今天让我们再接再厉,实现多页爬取,顺便实现职位和公司的关键词搜索功能. 之前的内容就不再介绍了,不熟悉的请一定要 ...

  3. C/C++函数参数读取顺序

    #include <iostream> #include <stdio.h> using namespace std; void B(int a, int b){ cout & ...

  4. ctrl + z fg bg

    [root@bass ~]# jobs [1]+ Stopped vncviewer 192.168.1.17:5904 [root@bass ~]# #ctrl + z [root@bass ~]# ...

  5. 搭建邮局(邮件服务器) - hmailserver

    1.查看服务器mx是否解析成功 nslookup  set type=mx   2.hmailserver服务器 smtp设置     3.foxmail 设置   4.使用webmail(after ...

  6. UML从需求到实现---类图(1)

    上次写到了UML的包图,用例等:接上:UML从需求到实现---包图 按照UML中图的出现顺序.当做完包图以后.我们下一步要做的当然是类图,类图也是UML中的三大核心图之一. 看到很多文章在描述类图的时 ...

  7. oracle11g客户端 安装图解

    软件位置:我的网盘 -- oracle空间 -- oracle工具 -- win64_11gR2_database_clint(客户端) -- 压缩软件包 先将下载下来的ZIP文件解压,并运行setu ...

  8. Visual Studio一秒变Node.js IDE

    (此文章同时发表在本人微信公众号"dotNET每日精华文章") 上个月微软发布了一个插件,可以让Visual Studio一秒变身最强大的Node.js开发工具.现在源代码移到了G ...

  9. SqlServer 临时表 与 表变量(转)

    1. 表变量 变量都以@或@@为前缀,表变量是变量的一种,另外一种变量被称为标量(可以理解为标准变量,就是标准数据类型的变量,例如整型int或者日期型DateTime).以@前缀的表变量是本地的,因此 ...

  10. 小甲鱼PE详解之区块描述、对齐值以及RVA详解(PE详解06)

    各种区块的描述: 很多朋友喜欢听小甲鱼的PE详解,因为他们觉得课堂上老师讲解的都是略略带过,绕得大家云里雾里~刚好小甲鱼文采也没课堂上的教授讲的那么好,只能以比较通俗的话语来给大家描述~ 通常,区块中 ...