错误类型:
1.语法错误
2.环境错误{权限、打开文件失败、数据库服务器不可用}
3.逻辑错误(比较难排查),比如本来是用==,变成用赋值 = // 用单元测试
PHP 错误级别
1. deprecated 最低级别错误
if(ereg('wjh','weijianhua wjh ni hao ',$matches)){
print_r($matches);
}else{
echo 'nothing find';
}
echo mysql_escape_string('\' or 1=1#');
2. notice 通知级别错误
header('Content-Type:text/html;charset=utf-8');
echo $king;
echo '程序继续执行';
$userInfo = array('username'=>'king','age'=>12);
echo $userInfo['username'];
echo '<hr/>';
echo $userInfo[age];
echo '程序继续执行';
3. warning 警告级别错误
settype($var,'int');
var_dump($var);
echo '程序继续执行';
settype($var,'int');
var_dump($var);
settype($var,'king');
echo '<hr/>';
var_dump($var);
echo '<hr/>';
echo '程序继续执行';
4. Fatal error 级别错误
echo md6('king');
echo '程序继续执行';
5. parse error 错误
最高级别的错误,其他有错还看不到。
echo 'aaaa'
echo md6('king');
echo '程序继续执行';
6. E_USER_相关的错误
与用户抛出的错误有关。
7. PHP 配置文件中与错误相关的选项
错误模块:
设置错误级别:
1.通过配置文件设置:
保存后重启服务器。
2.通过动态函数设置
echo error_reporting();//当前错误级别常量,32767
echo '<hr/>';
//显示所有错误
error_reporting(E_ALL);//32767
//error_reporting(E_ALL&~E_NOTICE)
echo error_reporting(E_ALL);
//error_reporting(0);//相当于关闭错误提示,但屏蔽不了解析错误
error_reporting(-1);//显示所有错误
echo $king;
echo '程序继续执行';
3.通过运行时设置配置选项的值
ini_set('error_reporting',0);//代表不显示我们的错误
ini_set('error_reporting',-1);//代表显示所有错误
ini_set('display_errors',0);//关闭显示
echo $king;
echo '程序继续执行';
是否显示错误:内嵌到脚本中,部署到线上要关闭
error_reporting(-1);//显示所有错误
@settype($var,'king'); //@屏蔽错误
8. trigger_error(‘错误信息’,’错误级别’)触发错误
类似于die();
$num1 = 1;
$num2 = '2a';
if(!(is_numeric($num1) && is_numeric($num2)))
{
trigger_error('num1和num2必须为合法数值',E_USER_NOTICE);// 抛出 notice
//echo trigger_error('num1和num2必须为合法数值',E_USER_WARNING); // 抛出 warning,
echo 输出函数的返回值,即错误信息
}else{
$num1 + $num2;
}
echo '<br/>程序继续执行';