错误分类:
1.语法错误
2.运行时错误
3.逻辑错误
系统错误:
E_ERROR//系统严重错误
E_WARNING//系统警告
E_PARSE//语法错误
E_NOTICE//系统提示
用户自定义错误:
E_USER_ERROR
E_USER_WARNING
E_USER_NOTICE
其他:
E_ALL//"所有"错误
E_STRICT//"严格性"语法检查错误
错误的触发:
- 正常触发
- 人工触发:trigger_error(“错误提示”,用户错误代号);
错误的显示控制:
1.设定是否显示:
在php.ini中:display_errors=On;
脚本中:ini_set('display_errors',true);//只对当前脚本有效,无需重启Apache
2.设定显示哪些错误:
php.ini中:
error_reporting=E_NOTICE//只显示NOTICE错误
error_reporting=E_NOTICE|E_WARNING//显示NOTICE和WARNING错误
实际上在开发阶段常用的是:error_reporting=E_ALL|E_STRICT//显示所有错误
记录错误日志:
1.在php.ini中设定:
log_errors=On
error_log=php_errors.log//记录错误日志文件名
此时该文件没有给定路径,则系统会在每个文件夹下建立该文件并记录进去
error_log=syslog//此时不会记录错误日志文件而是把错误信息写入到系统错误日志中
2.在当前脚本中:
ini_set("log_errors",On);
ini_set("error_log",'err1.log');//文件名后缀可以随便用
ini_set("error_log",syslog);//记录到操作系统日志中
自定义错误处理:
set_error_handler("myError");
function myError($errNo,$errMsg,$errFile,$errLine){//参数名可以自己命名,但顺序不能改
echo "错误号为$errNo";
echo "错误信息为$errMsg";
echo "错误文件名为$errFile";
echo "错误所在行为$errLine";
}
注:
1.一定使用自定义错误处理程序,否则系统不再处理错误
2.对于严重错误,自定义错误处理函数处理不了