php基础学习之错误处理(其二)

在实际应用中,开发者当然不希望把自己开发的程序的错误暴露给用户,一方面会动摇客户对己方的信心,另一方面容易被攻击者抓住漏洞实施攻击,同时开发者本身需要及时收集错误,因此需要合理的设置错误显示与记录错误日志


一,错误显示设置

错误显示设置用于设置哪些错误该显示,以及该如何显示

在php中,其实有两种方式来设置当前脚本的错误处理方式

(一)php配置文件

在php.ini文件基于全局的配置,该文件下有两个参数

分别是error_reporting和display_errors,前者用于设置显示什么级别的错误,后者用于设置是否显示错误

(注:该知识点对网安SQL注入有意义,此处不细讲)

(二)php脚本中设置

error_reporting()

该函数可以在php脚本中调用,以设置错误的显示级别,需要传入一个错误代号(常量) ,见本篇【 】->php基础学习之错误处理(其一)-CSDN博客

例如传入0时,将不显示任何错误信息

当调用error_reporting()函数不传入参数时也是符合语法的,此时它将返回当前php脚本设置的错误级别

如下图所示:在上一篇【三.(六 )】已经验证过各错误代号(常量)的具体值,其中E_ALL的值是32767对应的二进制数,E_NOTICE的值是8对应的二进制数,那么表达式【E_ALL & ~E_NOTICE 】(该表达式的含义是除去NOTICE级别的错误)的结果正好是下面脚本的输出结果32759,说明error_reporting()函数返回的错误级别是正确的->php基础学习之错误处理(其一)-CSDN博客

ini_set()

和【一.(一)】本质是一样的,通过修改配置文件中的参数进行设置,但是脚本中的设置优先级比配置文件中的优先级更高(如果配置文件和脚本文件中的配置项不一致,以脚本中的配置优先),当然前提是脚本中的相关代码被执行

该函数有两个参数,第一个参数传入一个字符串 (这个字符串就是配置项的名称),第二个参数传入该配置项对应的值

例如在上文提到的error_reporting,使用ini_set()函数设置显示


二,错误日志设置

在生产环境中无可避免会发生错误,但作为开发者又不希望展示给用户看,所以需要使用日志记录错误以便做出相应debug

参考本篇->如何配置使用php.ini中的错误日志功能? (newsn.net)

(一)开启日志功能

php日志功能的开关由参数【log_errors】决定,找到它并赋值为On

(二)指定路径

错误日志设置需要定义好error_log配置参数,并赋予该配置参数一个值(此值是一个.log文件的路径<注意路径的格式,一般用左斜杠>,将会保存程序测试或使用时发生的错误,如果需要关闭记录日志的功能,直接将此参数以及值注释或者删除即可)

(三)测试

(实际开发中一般将【display_errors 】或【display_startup_errors】等参数设置为Off,这样在网页中就不会显示错误而是只将错误记录到日志文件中)

相关推荐
Q_Q19632884756 分钟前
python的平安驾校管理系统
开发语言·spring boot·python·django·flask·node.js·php
是阿建吖!4 小时前
【Linux | 网络】应用层
linux·网络·php
夏至春来-美美7 小时前
php绘图添加水印,文字使用imagick库的操作
php
果子⌂8 小时前
Docker高级管理
开发语言·docker·云计算·php
Q_Q51100828520 小时前
python的婚纱影楼管理系统
开发语言·spring boot·python·django·flask·node.js·php
拓端研究室21 小时前
专题:2025供应链数智化与效率提升报告|附100+份报告PDF、原数据表汇总下载
开发语言·php
Shartin1 天前
Can201-Introduction to Networking: Application Layer应用层
服务器·开发语言·php
乌云暮年1 天前
Linux常用命令
linux·服务器·ssh·php
apihz1 天前
通用图片搜索-搜狗源免费API接口使用指南
android·java·python·php·音视频
博睿谷IT99_1 天前
华为数据通信网络基础
开发语言·华为·php·华为认证