处理脚本让浏览器按照指定字符集解析的方法
header(‘Content-type:text/html;charset=utf-8’);
错误分类(异常)
1.语法错误:(parse error)
2.运行错误:(runtime error)
3.逻辑错误:程序员写代码不够规范,得不到想要的结果
错误代号
所有看到的错误代码在php中都被定义成了系统常量(可以直接被使用)
1.系统错误
E_PARSE:编译错误,代码不执行
E_ERROR:fatal error,致命错误,会导致代码不能正确继续执行(出错的位置断掉)
E_WARNING:warning,警告错误,不影响代码执行,但是可能得到意想不到的结果
E_NOTICE:notice,通知错误,不会影响代码执行
2.用户错误
E_USER_ERROR,E_USER_WARNING,E_USER_NOTICE
3.其他:E_ALL,代表着所有错误
如果想要对一些错误进行控制,可以使用位运算符
排除通知级别notice:E_ALL & ~E_NOTICE
只要警告和通知: E_WARNING | E_NOTICE
错误触发
人为触发:类似于try..catch..
使用trigger_error()函数
错误显示设置
哪些错误该显示,哪些该如何显示
设置方法:
1.PHP的配置文件:全局配置 php.ini
Dispkay_errors:是否显示错误
Error_reporting:显示什么级别的错误.
2.在运行中的php脚本中设置: 配置级别比配置文件高(通常在代码中控制 )
Error_reporting(): 设置对应的错误显示级别。
Ini_set(‘配置文件中的配置项’,配置值)
Ini_set('error_reporting',E_ALL);
Ini_set('display_errors',1);
3.将错误日志保存在文件中
1.开启错误日志:log_errors = On
2.配置错误日志的路径 :error_log = 路径名
自定义错误处理
php系统提供了一种用户处理错误的机制:用户自定义处理函数,然后将该函数增加错做系统错误处理的句柄中,然后系统会在碰到错误之后,使用用户定义的错误函数
1.set_error_handler()函数,将用户自定义的函数放到系统中
<?php
//解决中文乱码
header('Content-type:text/html;charset=uft-8');
//自定义错误处理机制
//自定义函数
/**
* @param $errno 是系统提供的错误代码 E_ALL,E_NOTICE..
* @param $errstr
* @param $errfile
* @param $errline
* @param $errcontext
* @return false
*/
function my_error($errno,$errstr,$errfile,$errline,$errcontext){
//判断:当前会碰到错误有哪些
if (!(error_reporting() & $errno)){
return false;
//error_reporting没有参数代表获取当前系统错误处理对应的级别
}
//开始判断错误类型
switch ($errno){
case E_ERROR:
case E_USER_ERROR:
echo 'fatal error in file ' . $errfile . ' on line ' . $errline . '<br/>';
echo 'error info : ' . $errstr;
break;
case E_WARNING:
case E_COMPILE_WARNING:
echo 'WARNING error in file ' . $errfile . ' on line ' . $errline . '<br/>';
echo 'error info : ' . $errstr;
break;
case E_NOTICE :
case E_USER_NOTICE:
echo 'E_NOTICE error in file ' . $errfile . ' on line ' . $errline . '<br/>';
echo 'error info : ' . $errstr;
break;
}
return true;
}
//错误
echo $a;
//修改错误机制
set_error_handler('my_error');
echo $a;