一、错误的种类
查看源码复制到剪切板打印帮助
; E_ALL //-所有的错误和警告,(不包含E_STRICT).
; E_ERROR //-致命的运行时错误
; E_RECOVERABLE_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 //-用户提示信息。;
二、php.ini 配置错误显示与否
查看源码复制到剪切板打印帮助
//1、错误消息输出到用户端(调试代码时候,打开这项更方便)
display_errors = ON
//2、错误消息将不会输出到用户端(最终发布给用户时记得改成off)
display_errors = OFF
三、php.ini 错误输出配置推荐
查看源码复制到剪切板打印帮助
//1、表示输出所有的信息。
error_reporting = E_ALL
//2、表示输出所有的错误,除了提示。
error_reporting = E_ALL & ~E_NOTICE
//3、表示输出所有的 ERROR 信息。
error_reporting = E_COMPILE_ERROR|E_RECOVERABLE_ERROR|E_ERROR|E_CORE_ERROR
四、php 中调整整错误级别
1、错误级别列表
值 错误代码
1 E_ERROR
2 E_WARNING
4 E_PARSE
8 E_NOTICE
16 E_CORE_ERROR
32 E_CORE_WARNING
64 E_COMPILE_ERROR
128 E_COMPILE_WARNING
256 E_USER_ERROR
512 E_USER_WARNING
1024 E_USER_NOTICE
2047 E_ALL
2048 E_STRICT
4096 E_RECOVERABLE_ERROR
2、使用 error_reporting ( [int level] ) 调整错误级别
例子
查看源码复制到剪切板打印帮助
error_reporting(0); //关闭所有错误显示
error_reporting(E_ERROR | E_WARNING | E_PARSE);
error_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE);
error_reporting(E_ALL ^ E_NOTICE); //php.ini错误值。
error_reporting(E_ALL); //显示所有错误信息。
五、自定义错误函数处理
1、使用 set_error_handler()函数向系统声明错误处理函数
2、使用 trigger_error()函数,可以触发一个 error
例子
查看源码复制到剪切板打印帮助
function myErrorHandler($errno, $errstr, $errfile, $errline)
{
switch ($errno) {
case E_USER_ERROR:
echo "<b>My ERROR</b> [$errno] $errstr\n";
echo " Fatal error in line $errline of file $errfile";
echo ", PHP " . PHP_VERSION . " (" . PHP_OS . ")\n";
echo "Aborting...\n";
exit(1);
break;
case E_USER_WARNING:
echo "<b>My WARNING</b> [$errno] $errstr\n";
break;
case E_USER_NOTICE:
echo "<b>My NOTICE</b> [$errno] $errstr\n";
break;
default:
echo "Unknown error type: [$errno] $errstr\n";
break;
}
}
//定义错误处理函数.
set_error_handler("myErrorHandler");
//假设出现了负数的年龄,这明显是错误的。
$age = -100;
if ($age < 0) {
//触发错误;
trigger_error("age you input must >= 0", E_USER_ERROR);
}