位置: 编程技术 - 正文

PHP的全局错误处理详解(php全局函数)

编辑:rootadmin

推荐整理分享PHP的全局错误处理详解(php全局函数),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:php提供三种全局变量的定义方法,分别是?,php提供三种全局变量的定义方法,分别是?,php常用的8个超全局变量,php常用的8个超全局变量,php全局变量和局部变量,php提供三种全局变量的定义方法,分别是?,php常用的8个超全局变量,php全局变量有哪些,内容如对您有帮助,希望把文章链接给更多的朋友!

本文目的

PHP的全局错误处理,在开发项目的时候很有用,可以帮助开发者快速定位一些问题,提高工作效率。默认情况下,全局错误会直接输出,但是最近开发时使用的一个框架库对全局错误处理进行了设定,导致很多错误信息没有输出,在定位问题上有一定的耗时。所以,研究了一下此库的实现,发现它设定了error_reporting和set_error_handler,导致此现象。现在记录一下这两个函数的用法,作为备忘录。

背景

PHP没有类型检测,开发人员比较容易输入错误单词,引起致命错误,最终导致脚本停止执行。如果这个时候,没有得到任何错误消息,那么会是一件很痛苦的事情。你不得不从脚本的第一行代码开始调试,在成千上万行的代码中不断的print或者echo,直到定位到这个输错的单词。然后,有不得不原路返回,将先前添加的print或echo全部删除。这时一件及其枯燥乏味的工作。

一般情况

正常情况下,php会将致命错误直接输出,会将错误的出处(文件地址,行号)和原因等输出,这样,开发着可以很方便的定位到问题。

但是有些时候,可能由于php.ini的设置问题,可能是第三方框架配置的问题,导致这些信息没有输出,那么此时,必须学会自己设置相关参数,输出这些错误信息,帮助快速定位问题。

error_reporting

PHP的全局错误处理详解(php全局函数)

error_reporting是一个php的全局配置参数,在php.ini中。用于配置错误输出级别,参数是比特位,可以用来设置错误输出的级别,下面是从php.ini中copy出来的信息:

默认情况下,php会输出所有错误信息,除了notice。同样,php标准函数中提供了名称相同的函数error_reporting(int $level),用于在php脚本中,完成同样的功能。这样将不会影响其他程序。值得注意的是,$level为0的时候是关闭错误输出,也就是任何错误都不会输出。

set_error_handler

php的默认错误处理是将消息输出。但是,有时候需要定义一些其他操作,这时就需要自定义错误处理函数。php提供内置函数set_error_handler可以帮助我们注册自己的错误处理函数。函数原型如下:

mixed set_error_handler ( callback $error_handler [, int $error_types = E_ALL | E_STRICT ] )

值得注意的是,即使注册了错误处理函数,默认的行为仍然会执行,也就是错误出现时,仍然会输出错误信息,所以需要在程序中显示的将错误级别设置为0,然后在注册自己的的错误处理函数。这种方式,在生产环境下,尤其重要,因为即时出错,敏感内部错误信息也不会暴露给潜在的恶意用户。还有很重要的一点需要指出,自定义错误处理函数不能处理fatal error(比如编译错误)。下面是一个使用自定义错误处理函数的列子:

执行此脚本可以得到下面的输出:

可以看到,最后的“new NoExistClass()”的异常,没有被自定义的错误处理函数捕获。

最后,捎带提一下,set_exception_handler注册顶层的异常处理,在web一用中,可以设定一下,然后统一的跳转到错误处理页面。

PHP简单实现生成txt文件到指定目录的方法 本文实例讲述了PHP简单实现生成txt文件到指定目录的方法。分享给大家供大家参考,具体如下:php//fopen第二个参数可以是以下四个,区别就是是清空内容

PHP实现的线索二叉树及二叉树遍历方法详解 本文实例讲述了PHP实现的线索二叉树及二叉树遍历方法。分享给大家供大家参考,具体如下:phprequire'biTree.php';$str='ko#be8#tr####acy#####';$tree=newBiTree($str);$tr

使用ltrace工具跟踪PHP库函数调用的方法 本文实例讲述了使用ltrace工具跟踪PHP库函数调用的方法。分享给大家供大家参考,具体如下:可能大家已经很熟悉使用strace来跟踪系统调用,今天介绍

标签: php全局函数

本文链接地址:https://www.jiuchutong.com/biancheng/293658.html 转载请保留说明!

上一篇:php构造函数与析构函数(php 构造方法)

下一篇:PHP简单实现生成txt文件到指定目录的方法(php如何生成html)

  • 转账支票的签发
  • 理财产品分红和不分红的区别
  • 进项税需要转出吗
  • 进出口企业必须有报检资质吗
  • 摊销折旧是什么意思
  • 工厂投产前的准备工作有哪些
  • 补税款的分录应该怎么写
  • 微信转账手续费怎么算
  • 奖金计提发放会计分录
  • 劳务发票需要身份证原件吗
  • 超市开发票要交百分之几的税?
  • 调用核心征管业务服务节点报错
  • 未达起征点企业怎么处理
  • 个体工商户税种认定的税目可以改吗
  • 单位不发工资怎么解决要什么证据
  • 个人所得税完整证明
  • 暑假工需要什么条件
  • 期末增值税如何结转
  • 企业医保分几种
  • 任务栏图标重叠一起
  • 印花税的征收项目
  • 分配水电费会计分录怎么写
  • 端游上古世纪
  • php实现的中秋博饼游戏之掷骰子并输出结果功能详解
  • php字符串变量
  • 公司转让自建厂房怎么办
  • 单位公车是什么意思
  • 顺流交易逆流交易未实现内部交易损益
  • vue播放rtsp视频流
  • php imagettftext()函数
  • win11升级正式版
  • php实现图片上传到网页显示
  • js中的截取字符串
  • b站导出预设
  • nginx gui
  • springboot自带tomcat吗
  • php静态方法可以被继承吗
  • 注销退税资格申请报告模板
  • 会计账的银行存款与银行存款不一致 是属于账账不符吗
  • 笨办法学python 3电子书下载
  • 数据库损坏了怎么修复
  • mongodb聚合统计数量
  • 跨年度退回的公共预算支出
  • 个体户怎么交医保社保
  • 固定资金作为固定资产的货币表现的特点
  • sql2005附加数据库出错
  • 其他综合收益算不算所有者权益
  • 电子承兑过期了
  • 研发费用 汇算清缴
  • 润滑油消费税计算公式
  • 酒店没有营业执照开业犯法吗
  • 自建的固定资产折旧计入哪里
  • 某个项目投资多少钱怎么算
  • 处置固定资产应通过什么账户核算
  • 纳税人可以委托税务人员办理纳税申报吗
  • mysql如何跨库查询
  • 如何设置谷歌搜索
  • win10安全系统
  • mac系统操作的小技巧
  • win8系统摄像头怎么打开
  • win10网络身份验证失败
  • win7系统两台电脑共享
  • 微软官方解决升级问题
  • 硬盘已经安装系统文件夹
  • 局域网下访问vue点击无反应
  • win10安装完后有多大
  • 检测输入条件的各种组合
  • cocos游戏开发教程
  • python怎么计数
  • 使用vs code开发Django
  • WinForm中UnityWebPlayer屏蔽右键菜单
  • js判断是否是ie浏览器
  • 江苏省国税电子税务局官网发票验
  • 自用的房产怎么交房产土地税
  • 临时税务登记证是什么意思
  • 360浏览器hi真不巧
  • 开发商卖商铺需要哪些资质条件?
  • 地税稽查局查账严重吗
  • 西藏景区门票优惠政策最新
  • 深圳税务局完税证明
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设