一、php程序的错误发生一般归属下面3个领域
1、语法错误 语法错误最常见,并且也容易修复,如:代码中遗漏一个分号,这类错误会阻止脚本的执行。 2、运行时的错误: 这种错误一般不会阻止php脚本的执行,但会阻止当前要做的事情,输出一条错误,但php脚本 会继续执行。 3、逻辑错误: 这种错误最麻烦,既不阻止脚本的执行,也不输出错误消息。
二、php的错误报错级别
级别常量 错误值 错误报告描述 E_ERROR 1 致命的运行时错误(阻止脚本执行) E_WARNING 2 运行时警告(非致命性错误) E_PARSE 4 从语法中解析错误 E_NOTICE 8 运行时注意消息(可能是或可能不是一个问题) E_CORE_ERROR 16 PHP启动时初始化过程中的致命错误 E_CORE_WARNING 32 PHP启动时初始化过程中的警告(非致命性错) E_COMPILE_ERROR 64 编译时致命性错 E_COMPILE_WARNING 128 编译时警告(非致命性错) E_USER_ERROR 256 用户自定义的致命错误 E_USER_WARNING 512 用户自定义的警告(非致命性错误) E_USER_NOTICE 1024 用户自定义的提醒(经常是bug) E_STRICT 2048 编码标准化警告(建议如何修改以向前兼容) E_ALL 6143 所有的错误、警告和注意信息
三、调整错误报告级别
1、display_errors:是否开启php输出错误报告的级别。 值为:On (默认的输出错误报告)、Off (屏蔽所有的错误信息) -- 在php脚本中可以调用ini_set( ) 函数,动态设置php.ini配置文件。 -- 如:ini_set("display_errors", "On"); 显示所有的错误信息 2、error_reporting: 设置不同的错误级别报告 error_reporting = E_ALL & ~E_NOTICE -- 可以抛出任何非注意的错误 error_reporting = E_ERROR | E_PARSE | E_CORE_ERROR -- 只考虑致命的运行时错误,新解析错误和核心错误。 error_reporting = E_ALL & ~(E_USER_ERROR | E_USER_WARNING | E_USER_NOTICE) -- 报告用户导致的错误之外的所有错误。 在php脚本可以通过error_reporting() 函数动态设置错误报告级别。 如:error_reporting(E_ALL);
四、代码测试
<html>
<head><title>测试错误报告</title></head>
<body>
<h2>测试错误报告</h2>
<?php
/*开启php.ini中的display_errors指令,只有该指令开启如果有错误报告才输出*/
ini_set('display_errors', 1);
/*通过error_reporting()函数设置在本脚本中,输出所有级别的错误报告*/
error_reporting( E_ALL );
/*“注意(notice)”的报告,不会阻止脚本的执行,并且可能不一定是一个问题 */
getType( $var ); //调用函数时提供的参数变量没有在之前声明
/*“警告(warning)”的报告,指示一个问题,但是不会阻止脚本的执行 */
getType(); //调用函数时没有提供必要的参数
/*“错误(error)”的报告,它会终止程序,脚本不会再向下执行 */
get_Type(); //调用一个没有被定义的函数
?>
</body>
</html>