php捕获致命错误
php捕获致命错误
记录php错误日志可以有力的帮我们查找问题、修复bug,php提供了set_error_handler、set_exception_handler来捕获错误和异常。但是set_error_handler并不能捕获E_ERROR、 E_PARSE、 E_CORE_ERROR、E_CORE_WARNING、E_COMPILE_ERROR、E_COMPILE_WARNING、E_STRICT等错误。一般来讲,如果是致命错误,会导致php解释器都无法编译通过,自然不能捕获这些错误,但是,我们可以通过一些方法来巧妙的得到这些错误信息。首先先建立一个tmp.php
<?php
//error_reporting(0);
ob_start();
set_error_handler('errorHandler');
register_shutdown_function( 'close' );
function 大专栏 php捕获致命错误class="hljs-title">close(){
ob_end_clean();
$error = error_get_last();
echo '<pre>';
print_r($error);
}
require 'short.php';
然后在short.php中写入一些错误代码,如
echo $a//故意不加分号
然后访问tmp.php,就会发现,页面没有显示php自身的错误提示,而是执行了close方法。以上代码关键几点。
- 第一、开启
ob_start - 第二:使用
register_shutdown_function注册函数 - 第三:使用
error_get_last函数获取错误信息 - 第四:php解析的第一个文件不能出现致命错误,否则无法捕获。所以也推荐大家搭建自己的框架或者选择框架时,最好使用单一入口方式
php捕获致命错误的更多相关文章
- PHP错误以及异常处理
以前一直觉得php的异常处理没有什么,现在才发现这个还真是门学问,于是狠下心来好好研究了一下,写一篇文章,也作备忘吧. 1. php错误 无论是什么语言编程,都会有如下三种错误,当然php也不例外. ...
- SDL第一个程序:加载一张图片
直接看代码吧 using System; using System.Collections.Generic; using System.ComponentModel; using System.Dat ...
- Swoole笔记(一)
简介 Swoole是一个PHP扩展,提供了PHP语言的异步多线程服务器,异步TCP/UDP网络客户端,异步MySQL,异步Redis,数据库连接池,AsyncTask,消息队列,毫秒定时器,异步文件读 ...
- pdo的简单介绍和使用
1,PDO的定义:php data object(php数据对象); 2,连接pdo的相关参数:$dsn.$user.$pass. 其中$dsn="mysql:host=$host;dbna ...
- PHP 注册错误和异常处理机制
注册错误和异常处理机制有三个PHP函数需要学习 1. register_shutdown_function('Bootstrap\Library\Frame::fatalError'); 2. set ...
- swoole中退出、异常与错误的处理笔记
关于PHP这方面的知识 可以看 https://www.cnblogs.com/zyf-zhaoyafei/p/6928149.html 进行补课 然后下面记录一下使用swoole的时候需要注意的地方 ...
- PHP版本对比【转】
其他历史http://www.cnblogs.com/yjf512/p/3588466.html php5.3 改动: 1.realpath() 现在是完全与平台无关的. 结果是非法的相对路径比如FI ...
- php核心技术与最佳实践知识点(上)
一.基础 1.serialize:序列化一个类,只是保存了类的属性,所以还需要反序列化unserialize的时候包含该类. 2.对于将array转为object,这个转换因为没有具体的类,所以称为了 ...
- 捕获 PHP 致命错误 Fatal Errors
register_shutdown_function()函数都将会你的程序执行完后执行,无论你的程是否运行正常. 所以,在这个函数前执行任何操作我们都要检查是否真的有致命错误出现.如果出现致命错误,我 ...
随机推荐
- NFS简介和配置 一
一.简介 NFS(Network File System/网络文件系统): 1).设置Linux系统之间的文件共享(Linux与Windows中间文件共享采用SAMBA服务): 2) ...
- NGDC|BIGD
生命组学 生命起源经过复杂演化诞生了大量生物体及其基因组. 现今NCBI最大的基因组: 植物:糖松27.6G 动物:墨西哥蝾螈32.4G 大数据能做什么? 大数据时代如同大航海时代一样,需要具有与时代 ...
- tensorflow2使用中的一些问题
from tensorflow import keras import tensorflow as tf import numpy as np print(tf.__name__,tf.__versi ...
- 计量经济与时间序列_自协方差(AutoCovariance)算法解析(Python)
1 样本的自协方差函数的通式如下: 2 其实,后面要计算的自相关函数也可以用自协方差来表示: # @author: "Thomas.Shih" # @date: 2018/3/5 ...
- Gson使用指南(二)
注:此系列基于Gson 2.4. 一.Gson的流式反序列化 自动方式 常用的重载方法: Gson.toJson(Object); Gson.fromJson(Reader,Class); Gson. ...
- AI精灵
由于使用的CRM系统是Aras Innovator系统,所有的任务分配必须登入系统查看,故做出以下自动接受任务信息的小工具. 1.登入,实现自动记录上次登入的信息,支持多账户 登入成功后会以图标运 ...
- python集合运算
用 |,& 代替 并 和交 的运算.+, -代替并和差集.
- Java和Mysql中的数据类型
1.mysql中的基本类型 1.整数: tinyint:1个字节 -128~127 smallint: 2个字节 -32768~32767 int : 4个字节 bigint: 8个字节 2 ...
- [SDOI2019]热闹又尴尬的聚会(图论+set+构造)
据说原数据可以让复杂度不满的暴力O(Tn^2)过掉……O(Tn^2)方法类似于codeforces一场div2的E题 有一种比较好的方法:每次找出原图G中度最小的点加入q,然后将相邻的点加入新图G'. ...
- 【转】高频使用的git清单
侵删 作者: 阮一峰 链接: http://www.ruanyifeng.com/blog/2015/12/git-cheat-sheet.html 我每天使用 Git ,但是很多命令记不住. 一般来 ...