当前位置: 首页 > news >正文

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,这样在网页中就不会显示错误而是只将错误记录到日志文件中)

http://www.lryc.cn/news/310769.html

相关文章:

  • 云计算 2月28号 (linux的磁盘分区)
  • demo型xss初级靶场
  • 【推荐算法系列十八】:DSSM 召回算法
  • CNAN知识图谱辅助推荐系统
  • 大数据经典面试例题
  • 软考56-上午题-【数据库】-数据库设计步骤2
  • 抖店入驻费用是多少?新手入驻都有哪些要求?2024费用明细!
  • 2024东南大学553复试真题及笔记
  • 编程笔记 html5cssjs 096 JavaScript 前端开发(完结)
  • 案例介绍:信息抽取技术在汽车销售与分销策略中的应用与实践
  • 几种常用的企业加密文件传输方式,最后一种更佳!
  • 【全志D1-H 哪吒开发板】Debian系统安装调教和点灯指南
  • Redis 8种基本数据类型及常用命令和数据类型的应用场景
  • JAVA内存模型与JVM内存结构
  • 双导师的中国社科院与英国斯特灵大学创新与领导力博士
  • OpenXR 超详细的spec--API初始化介绍
  • 认识通讯协议——TCP/IP、UDP协议的区别,HTTP通讯协议的理解
  • 谈一谈工作中的前后端功能开发范围
  • Kubernetes 学习总结(46)—— Pod 不停重启问题分析与解决
  • Vulnhub靶机:Bellatrix
  • 深入探讨 AutoGPT:彻底改变游戏的自主 AI
  • Java Web之网页开发基础复习
  • 华容道问题求解第一部分_详细设计(一)之棋子和游戏类_初始化部分
  • 【框架】Spring 框架重点解析
  • js中的内存泄漏
  • 营业执照年报申报
  • Springboot教程(五)——单元测试
  • 【Kotlin】函数
  • Unity生命周期函数解析
  • 【Qt】QTextEdit/QPlainTextEdit 实现 Tab 键多行缩进与反缩进