PHP学习——错误(五)
一、错误分类
- 语法错误
- 运行错误
- 逻辑错误
二、错误代号
1)系统错误(在PHP中定义成系统常量,可以直接使用)
E_PARSE: 编译错误,代码不会执行
E_ERROR: FATAL ERROR,致命错误。会导致代码不可以正确继续执行(出错位置断掉)
E_WARNING:warning,警报错误,不会影响代码执行,但是会得到意想不到的结果
E_NOTICE: 通知错误,不会影响代码执行
2)用户错误
用户自定义错误触发,会使用到的错误代号(系统不会使用)
3)其他(E_ALL,代表所用从错误【进行错误控制的时候使用比较多】,建议在开发过程中(开发环境)使用)
所有以E开头的错误常量(代号)其实都是由一个字节存储,然后每一种错误占据一个对应的位,如果想进行一些错误的控制,可以使用位运算进行操作
排除通知级别notice:E_ALL&E_NOTICE
只要警告和通知:E_WARNING | E_NOTICE
三、错误触发
举例1:漏分号
举例2:除数为0
举例3:人为触发错误(默认为Notice,使用中文需要使用head('Content-type:text/html;charset=utf-8')
)
四、错误日志设置
在实际生产环境中,不会直接让错误赤裸裸的展示给用户:
不友好
不安全:错误会暴露网站很多信息(路径、文件名)
所以在生产环境中,一般不显示错误(错误也比较少),但是不可能避免会出现错误**(测试的时候不会发现所有的间题),这个时候不希望看到,但是又希望捕捉到可以让后台程序员去修改:需要保存到日志文件中,需要在PHP配置文件中或者代码中(ini_set)设置对应的
error_log
**配置项开启日志功能
指定路径