1.禁止显示错误
(1).php.ini里有一个专门的配置项display_errors,这个值的状态为on或者1在页面中显示错误信息,0或者off则不在页面中显示错误信息。
(2).若没有修改服务器php.ini的状态权限,可以用ini_set('display_errors', 0)把其状态值设为0或为1,仅在当前页面生效。
(3).在php.ini中有一个error_reporting参数,如果把它设置为0,则整个PHP引擎发生错误均不会显示、输出、记录。在php代码里,也可直接打error_reporting(0)来禁止显示错误信息,仅在当前页面生效。
(4).可在发生错误的代码语句行前用错误抑制符@来禁止显示错误信息,这样做效率低下,尽量少用或不用。
2.错误报告级别
(1).掌握级别的错误类型
| 错误类型 | 说明 |
|---|---|
| E_ERROR | 错误,文件直接中断,必须要解决 |
| E_WARNING | 警告,问题较严重但代码会继续运行下去,通常必须解决,若是明确的、故意的可不用管 |
| E_NOTICE | 提示,有些小问题不会影响程序,常发生在项目未定义,可不用管 |
| E_PARSE | 编译时语法解析错误,解析错误仅仅由分析器产生,必须解决 |
| E_ALL | 所有的错误 |
| E_STRICT | 启用PHP对代码的修改建议,以确保代码具有最佳的互操作性和向前兼容性。 |
| E_DEPRECATED | 启用后将会对在未来版本中可能无法正常工作的代码给出警告。 |
(2).根据错误报告类型,可以配合error_reporting()函数来显示自己想要看到的错误,例:
| 函数 | 效果 |
|---|---|
| error_reporting(0) | 关闭所有错误显示 |
| error_reporting(E_ALL) | 显示所有错误 |
| error_reporting(E_ALL &~ E_NOTICE) | 显示所有错误,不显示提示 |
| error_reporting(E_ALL &~ E_NOTICE &~ E_STRICT &~ E_DEPRECATED) | 显示所有错误,不显示提示、兼容性和未来兼容性 |
3.错误记录日志
(1).可在php.ini查找或修改相关配置项:
| 参数 | 配置项 | 说明 |
|---|---|---|
| log_errors | on/off | 是否开启日志记录 |
| log_errors_max_len | 整型,默认为1024 | 单行错误最大记录长度 |
| error_log | syslog或指定路径 | 错误日志记录位置 |
注:syslog是指系统来记录。Windows系统在电脑的日志收集器里,Linux默认在:/etc/syslog.conf
(2).在代码里,有一个自定义的错误日志函数:
[bool] error_log([string]$错误消息, [int]$错误消息类型, [string]$存储目标);
其中,第二个参数有三种类型码:
| 类型码 | 作用 |
|---|---|
| 0 | 发送至默认的error_log指定位置,当第二、三参数不填时,那么第二参数就默认为0 |
| 1 | 发送到指定邮件位置,那么第三参数就填邮箱 |
| 3 | 发送到指定的文件位置,那么第三参数填绝对路径 |