在PHP开发的时候常常会用到error_reporting(report_level)来调试自己的程序,下面列出了report_level可能值:
值 | 常量 | 描述 |
1 |
E_ERROR |
这是一个严重错误,不可恢复,如位置异常,内存不足等 |
2 |
E_WARNING |
警告,最一般的错误,如函数的参数错误等 |
4 |
E_PARSE |
解析错误,在解析PHP文件时产生,并强制PHP在执行前退出 |
8 |
E_NOTICE |
通告表示可能在操作一些未知的变量等。在开发时可开启通告,以保证程序是"安全通告"的,瑞在正式系统中,应关闭通告 |
16 |
E_CORE_ERROR |
这个内部错误是由于PHP加载扩展失败而导致的,并且会导致PHP停止运行并退出 |
32 |
E_CORE_WARNING |
PHP启动时初始化过程中的警告(非致命性错) |
64 |
E_COMPILE_ERROR |
编译错误是在编译时发生,这个错误将导致PHP运行退出 |
128 |
E_COMPILE_WARNING |
编译警告用于告诉用户一些不推荐的语法信息 |
256 |
E_USER_ERROR |
用户定义的错误将导致辞PHP退出,它对是来自PHP自身,而是来自脚本文件中。 |
512 |
E_USER_WARNING |
脚本使用它来通知一个执行失败,同时PHP也会用E_WARNING通知 |
1024 |
E_USER_NOTICE |
用户定义的通告用于在脚本中表示可能存在的错误 |
2048 |
E_STRICT |
编码标准化警告(建议如何修改以向前兼容) |
4096 |
E_RECOVERABLE_ERROR |
接近致命的运行时错误,若未被捕获则视同E_ERROR |
8191 |
E_ALL |
除E_STRICT外的所有错误(PHP6中为8191,即包含所有) |
例子:
任意数目的以上选项都可以用“或”来连接(用 OR 或 |),这样可以报告所有需要的各级别错误。例如,下面的代码关闭了用户自定义的错误和警告,执行了某些操作,然后恢复到原始的报错级别:
<?php
//禁用错误报告
error_reporting(0);
//报告运行时错误
error_reporting(E_ERROR | E_WARNING | E_PARSE);
//报告所有错误
error_reporting(E_ALL);
error_reporting(7);
/*
设置php错误检测级别
E_ERROR - 致命性运行时错 (1)
E_WARNING - 运行时警告(非致命性错)(2)
E_PARSE - 编译时解析错误 (4)
1+2+4 = 7
*/
?>
uchome系统中的调试处理:
D_BUG ? error_reporting(7) : error_reporting(0);