在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);