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

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值