PHP捕获Fatal error错误的方法

这篇文章主要介绍了PHP捕获Fatal error错误的方法,使用register_shutdown_function来捕获Fatal error错误,需要的朋友可以参考下

Fatal error 一般是不需要捕获的, 但是在一个复杂的程序中, 如果偶然出现内存不足导致fatal error就难以处理了.

比如. fatal error 出在MySQL类中fetch的时候. 这个时候就很难定位到真正问题所在了.

PHP异常处理中 可以通过set_error_handler来捕获. 但是却只能捕获 NOTICE/WARNING级别的错误, 对于E_ERROR是无能为力的.

register_shutdown_function 能解决set_error_handler的不足.

通过此函数注册好程序结束回调函数, 就可以捕获平时捕获不到的错误了. 再通过 error_get_last 对错误进行判断. 就容易找出难以定位的问题了.

代码如下:

function shutdown_function()  
{  
    $e = error_get_last();    
    print_r($e);  
}
register_shutdown_function(‘shutdown_function‘);

时间: 2024-10-12 11:14:46

PHP捕获Fatal error错误的方法的相关文章

php捕获Fatal error错误与异常处理

php中的错误和异常是两个不同的概念. 错误:是因为脚本的问题,比如少写了分号,调用未定义的函数,除0,等一些编译语法错误. 异常:是因为业务逻辑和流程,不符合预期情况,比如验证请求参数,不通过就用 throw new 抛一个异常. 在php5的版本中,错误是无法被 try {} catch 捕获的,如下所示: <?php error_reporting(E_ALL); ini_set('display_errors', 'on'); try { hello(); } catch (\Excep

安裝jpeg-6b png error错误解决方法

安裝jpeg-6b png error错误解决方法 默认安裝jpeg-6b shell> wget ftp://ftp.uu.net/graphics/jpeg/jpegsrc.v6b.tar.gz tar zxvf jpegsrc.v6b.tar.gzcd jpeg-6b./configure –-prefix=/usr/local/jpeg6 –enable-shared –enable-staticmakemake install 指定安装目录方式安装jpeg-6b 如果你选择默认安装,可

[PHP] error_reporting(0)可以屏蔽Fatal error错误

按照以前的印象,error_reporting(0)屏蔽不了php的Fatal error级别的错误.但是今天我遇到了一个问题才发现,它竟然可以屏蔽任何错误,包括Fatal error,浏览器会看不到500错误码,显示的是200,php-fpm下的php错误日志里没有任何输出,nginx下的错误日志里也没有任何输出. 发现的过程是这样的,下载了一个开源代码,直接浏览器运行显示空白.看各种日志都没有错误信息,使用php-xdebug配合vscode,才看得到在首页获取session在连接数据库,我

MySQL主从失败 错误Got fatal error 1236解决方法

由于mysql主服务器异外重启, 导致slave maysql server报错, 错误如下:查看从伺服器错误:mysql> show slave status\G;Master_Log_File: mysql-bin.000288Read_Master_Log_Pos: 627806304Relay_Log_File: mysql-relay-bin.000990Relay_Log_Pos: 627806457Relay_Master_Log_File: mysql-bin.000288Sla

本地wampserver的Internal Server Error错误解决方法

问题出现原因:       今天心血来潮,想换一个win8.1系统,我这个人做什么比较着急,备份完东西就做成了win8.1,所有的网站开发软件都安装好了,现在开始恢复我做的项目,因为还没有完成,当我恢复好时候,一打开出现了Internal Server Error错误,找了很多网上的教程都没有解决,没办法自己搜集了很多教程,一个一个试验,最后终于成功了,分享给大家! 问题代码|截图: Internal Server Error The server encountered an internal

mac 上运行cassandra出现的java.net.MalformedURLException: Local host name unknown: java.net.UnknownHostException: : : unknown error错误解决方法

运行: ./bin/cassandra 得到输出结果: objc[1881]: Class JavaLaunchHelper is implemented in both /Library/Java/JavaVirtualMachines/jdk1.8.0_25.jdk/Contents/Home/bin/java and /Library/Java/JavaVirtualMachines/jdk1.8.0_25.jdk/Contents/Home/jre/lib/libinstrument.d

Xcode真机调试中&quot;There was an internal API error&quot;错误解决方法

xcode7更新之后使用真机调试,在IOS8的一台iphone6也没问题.IOS9.2的一台iphone6s也没问题.但是在IOS7.0的一台iPhone4s上面在最后安装的时候居然安装失败,提示 There was an internal API error 如果你看到这段文字,说明您正使用RSS阅读或转自<一棵树-博客园>,原文地址:http://www.cnblogs.com/atree/p/Xcode_API_error.html 通过N多次百度之后,收集了一些方法,整理一下: 方法一

真机调试中&quot;There was an internal API error&quot;错误解决方法

xcode7更新之后使用真机调试,在IOS8的一台iphone6也没问题. IOS9.2的一台iphone6s也没问题.但是在IOS7.0的一台iPhone4s上面在最后安装的时候居然安装失败,提示 There was an internal API error 通过N多次百度之后,收集了一些方法,整理一下: 方法一:私有API.(PS:没有解决,什么是私有API:http://www.cnblogs.com/atree/p/iPhone_iOS_Private_API.html) 方法二:重新

【IIS错误 - HTTP 错误 500.19】HTTP 错误 500.19- Internal Server Error 错误解决方法(二)

昨天在 windows 7 下用 IIS 7.5 运行一个以前用 .NET Framework 3.5 写的项目,发现总是出现 500.19 错误,如下: 百度了好久,没找到解决问题确切的答案,我也知道肯定是权限的问题,当然,经过一番尝试之后,终于解决了,解决之道如下(个人方法,可以一试): 1.找到你的配置文件所在的文件夹,我的是 E:\源码\ASP.NET\DtCms10Beta2 2.右键,点击属性,切换到“安全”选项卡上,将 IIS-IUSRS 用户组添加到安全列表中,并按需求赋予其权限