相同之处
两者都可以控制是否显示错误信息
不同之处
ini_set('display_errors',[0|1]);只能控制是否打开错误显示,不能控制显示的错误级别
error_reporting()可以控制显示的错误级别
注意
ini_set()的权限大于error_reporting
ini_set('display_errors',0);
error_reporting(E_ALL);
require '1.php';//该文件不存在
上面例子中不会显示错误信息,因为ini_set()的权限比较大,只有当ini_set(‘display_errors’,1|on)才会显示错误信息
error_reporting参数
E_ALL – 所有的错误和警告(不包括 E_STRICT)
E_ERROR – 致命性的运行时错误
E_WARNING – 运行时警告(非致命性错误)
E_PARSE – 编译时解析错误
E_NOTICE – 运行时提醒(这些经常是你代码中的bug引起的,也可能是有意的行为造成的。)
E_STRICT – 编码标准化警告,允许PHP建议如何修改代码以确保最佳的互操作性向前兼容性。
E_CORE_ERROR – PHP启动时初始化过程中的致命错误
E_CORE_WARNING – PHP启动时初始化过程中的警告(非致命性错)
E_COMPILE_ERROR – 编译时致命性错
E_COMPILE_WARNING – 编译时警告(非致命性错)
E_USER_ERROR – 用户自定义的错误消息
E_USER_WARNING – 用户自定义的警告消息
E_USER_NOTICE – 用户自定义的提醒消息
测试:
1.报错500
<?php
ini_set('display_errors','off');
error_reporting(0|-1); //-1 打开所有php错误 0关闭所有PHP报错信息
require '1.php';//该文件不存在
die();
2.空白页
<?php
ini_set('display_errors','on');
error_reporting(0); //-1 打开所有php错误 0关闭所有PHP报错信息
require '1.php';//该文件不存在
die();
3.显示报错位置
<?php
ini_set('display_errors','on');
error_reporting(-1); //-1 打开所有php错误 0关闭所有PHP报错信息
require '1.php';//该文件不存在
die();