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:\practise\php\Error\error1.php on line 3
【例6】显示所有错误
<?php
error_reporting(-1);
echo dee();
输出:
( ! ) Fatal error: Call to undefined function dee() in D:\practise\php\Error\error1.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:\practise\php\Error\error1.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
PHP 错误与异常 笔记与总结(3)PHP 配置文件(php.ini)中与错误相关的选项 与 设置错误级别的更多相关文章
- PHP 错误与异常 笔记与总结(10)错误处理器测试
关联文件:myErrorHandler.php (上一篇) 先测试通知级别的错误的自定义处理: testErrorHandler.php <?php require_once 'myErrorH ...
- PHP 错误与异常 笔记与总结(7)将错误日志以邮件方式发送
当系统发生了很严重的问题,需要立刻发送给管理员.可以通过 error_log() 将错误以邮件形式发送到邮箱. 在 php.ini 中设置: sendmail_from = 472323087@qq. ...
- PHP 错误与异常 笔记与总结(4)通过 trigger_error 触发 PHP 错误
[错误抑制符@] 除了 php.ini 中 error_reporting 和 display_errors 的设置.error_reporting() 函数.ini_set() 函数 外,还可以使用 ...
- PHP 错误与异常 笔记与总结(8)自定义错误处理函数 set_error_handler()
通过 Set_error_handler() 函数设置用户自定义的错误处理函数. 步骤: ① 创建错误处理函数 ② 设置不同级别调用函数 ③ Set_error_handler() 函数制定接管错误处 ...
- PHP 错误与异常 笔记与总结(6)将错误日志保存在系统日志中
[将错误记录到系统日志中] 在 php.ini 中将 error_log 设置为: error_log = syslog 或者在运行时使用 ini_set() 函数设置. [例1] <?php ...
- PHP 错误与异常 笔记与总结(5)配置文件中与错误日志相关的选项 && 将错误记录到指定的文件中
[记录错误(生产环境)] php.ini: ① 开启 / 关闭 错误日志功能 log_errors = On ② 设置 log_errors 的最大字节数 log_errors_max_len = 其 ...
- PHP 错误与异常 笔记与总结(2)错误(Fatal)
(接上) d.Fatal error 致命级别的错误 —— 程序终止执行 [例7]调用一个未定义的方法 <?php echo md6('dee'); echo 'continue'; 输出: ( ...
- 配置完php.ini中的扩展库后,重启apache出现错误1067
网上有很多解决办法,比如更改环境变量,重装apache等等,但没有一个是符合我的.最后发现只是犯了一个低级错误,因为是第一次配置php.ini中的扩展库,忘记配置扩展库的路径. 解决办法:需要先加上扩 ...
- PHP 错误与异常 笔记与总结(12 )异常
① 异常的概念:异常和错误的区别 PHP 部分借鉴了 C++ 和 JAVA 中的异常处理机制.PHP 中的异常是指 程序运行和预期不太一致,与错误是两个不同的概念. ② 异常的语法结构 [例1] &l ...
随机推荐
- 【图文详解】scrapy安装与真的快速上手——爬取豆瓣9分榜单
写在开头 现在scrapy的安装教程都明显过时了,随便一搜都是要你安装一大堆的依赖,什么装python(如果别人连python都没装,为什么要学scrapy….)wisted, zope interf ...
- solr6.0学习
solr6.0学习(一)环境搭建准备工作:目前最新版本6.0.下载solr 6.0:Solr6.0下载JDK8 下载jdk1.8:jdk1.8[solr6.0是基于jdk8开发的]tomcat8.0 ...
- js iframe onload &line-height浏览器兼容问题
1.IE iframe onload事件 在IE下给iframe添加onload事件经常无效,因为在IE下它最多只能被激活一次,而且无论你有多少个iframe,被激活的也只能是最后一个的.可以用下面的 ...
- hrbustoj 1429:凸多边形(计算几何,判断点是否在多边形内,二分法)
凸多边形 Time Limit: 2000 MS Memory Limit: 65536 K Total Submit: 130(24 users) Total Accepted: 40(1 ...
- RBF高斯径向基核函数【转】
XVec表示X向量.||XVec||表示向量长度.r表示两点距离.r^2表示r的平方.k(XVec,YVec) = exp(-1/(2*sigma^2)*(r^2))= exp(-gamma*r^2) ...
- Java线程面试题 Top 50
转自:http://www.importnew.com/12773.html 不管你是新程序员还是老手,你一定在面试中遇到过有关线程的问题.Java语言一个重要的特点就是内置了对并发的支持,让Java ...
- hdu 4640(状压dp)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4640 思路:f[i][j]表示一个人状态i下走到j的最小花费,dp[i][j]表示i个人在状态j下的最 ...
- 使用pm2常见问题
一.日志 1.pm2 的log怎么查看?(安装pm2后默认日志的路径为~/.pm2/),可以通过pm2 show (name)来查看某个进程下的日志地址 2.修改日志的输出路径,通过写一个程序启动的配 ...
- Failed to load or instantiate
Failed to load or instantiate: add this code in your xml: xmlns:android="http://schemas.android ...
- sample
sample是在数据源取样. val data = sc.parallelize(1 to 20) data.sample(true,0.4).collect sample第一个参数表示是否是重复抽样 ...