php错误处理
一、错误分类:1、语法错误 2、运行时错误 3、逻辑错误
错误代号(部分):
所有看到的错误代码在php中都被定义为系统常量(可以直接使用)
1)系统错误
E_PARSE:编译错误,代码不会执行
E_ERROR: fatal error 致命错误,会导致代码不能正确执行(出错的位置断掉)
E_WARNING: warning,警告错误,不会影响代码执行,但是可能会得到意想不到的结果
E_NOTICE: 通知错误,不会影响代码执行
2)用户错误:E_USER_ERROR,E_USER_WARNING,E_USER_NOTICE
用户在使用自定义错误触发的时候,会使用到的错误代号
3)其他:E_ALL。代表着所有错误(通常在进行错误控制时使用较多),建议在开发中使用
所有以E开头的错误常量其实都是由一个字节存储,然后每一种错误占据一个对应的位,如果想进行一些错误的控制,可以使用位运算进行操作
排除通知级别notice:E_ALL & ~E_NOTICE
只要警告和通知:E_WARNING | E_NOTICE
二、错误触发
程序运行时触发
人为触发
注:处理脚本让浏览器按照指定字符集解析的方法
例:header('Content-type:text/html;charset=utf-8');
三、错误显示
错误显示设置:
两种方式
1、php配置文件:全局配置:php.ini文件
Display_error:是否显示错误
error_reporting:显示什么级别的错误
2、可以在运行的php脚本中区设置(通常在开发中都会在代码中去控制和配置)
Error_reporting():设置对应的错误显示级别
Ini_set('配置文件中的配置项',配置值);
Ini_set('error_reporting',E_ALL);
Ini_set('diapay_errors',1);
3、错误日志:
开启日志功能
log_errors=on;
指定路径
error_log=....
函数代码重用:https://www.imooc.com/video/14680
require()
require_once()
include()
include_once()
set_include_path()
ini_set()函数
restore_include_path() 取消设置的路径
$_POST
当 HTTP POST 请求的 Content-Type 是 application/x-www-form-urlencoded 或 multipart/form-data 时,会将变量以关联数组形式传入当前脚本。
$_GET
通过 URL 参数传递给当前脚本的变量的数组。
$_REQUEST
默认情况下包含了 $_GET,$_POST 和 $_COOKIE 的数组。
urldecode
urldecode — 解码已编码的 URL 字符串
解码给出的已编码字符串中的任何 %##。 加号('+')被解码成一个空格字符。
<?php $query = "my=apples&are=green+and+red"; foreach (explode('&', $query) as $chunk) {//将query中的字符串分为my=apples和are=green+and+red $param = explode("=", $chunk);//同上 if ($param) { printf("Value for parameter "%s" is "%s"<br/> ", urldecode($param[0]), urldecode($param[1])); } } ?>