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

按照以前的印象,error_reporting(0)屏蔽不了php的Fatal error级别的错误。
但是今天我遇到了一个问题才发现,它竟然可以屏蔽任何错误,包括Fatal error,浏览器会看不到500错误码,显示的是200,php-fpm下的php错误日志里没有任何输出,nginx下的错误日志里也没有任何输出。

发现的过程是这样的,下载了一个开源代码,直接浏览器运行显示空白。看各种日志都没有错误信息,使用php-xdebug配合vscode,才看得到在首页获取session在连接数据库,我没有配置任何数据库,因此new PDO的时候连接不上,报的是Fatal error错误。


经过下面这几句测试,可以看到确实屏蔽了Fatal error,语法错误屏蔽不了

<?php
error_reporting(0);
new aaa();
?>
<?php
error_reporting(0);
new PDO();
?>

我的测试环境为ubuntu,PHP版本是7.4,日志配置了下面这些,全都可以无视掉
/etc/php/7.4/fpm/pool.d/www.conf
php_flag[display_errors] = on
php_admin_value[error_log] = /var/log/php/www-error.log
php_admin_flag[log_errors] = on

/etc/php/7.4/fpm/php.ini
display_errors = On

原文地址:https://www.cnblogs.com/taoshihan/p/11825012.html

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

[PHP] error_reporting(0)可以屏蔽Fatal error错误的相关文章

PHP捕获Fatal error错误的方法

这篇文章主要介绍了PHP捕获Fatal error错误的方法,使用register_shutdown_function来捕获Fatal error错误,需要的朋友可以参考下 Fatal error 一般是不需要捕获的, 但是在一个复杂的程序中, 如果偶然出现内存不足导致fatal error就难以处理了. 比如. fatal error 出在MySQL类中fetch的时候. 这个时候就很难定位到真正问题所在了. PHP异常处理中 可以通过set_error_handler来捕获. 但是却只能捕获

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

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

Fatal error: Maximum execution time of 30 seconds exceeded in

Fatal error: Maximum execution time of 30 seconds exceeded in C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\code\curl\work\work3.php on line 38 一看就是超时.懒人比较喜欢第二种解决方法. 看http://cn.php.net/manual/zh/info.configuration.php#ini.max-execution

错误提示:LINK : fatal error LNK1123: failure during conversion to COFF: file invalid or corrupt 的解决方法

最近在win7 系统下,打算利用 cmake 生成项目文件,然后用vs2010进行编译.但是在cmake的时候出现错误弹窗: 并出现错误信息:LINK : fatal error LNK1123: failure during conversion to COFF: file invalid or corrupt 通过网上查找相关资料可知,问题出在cvtres.exe 这个文件上.LNK通过调用cvtres.exe来进行文件向coff格式转换. 网上讲通过搜索cvtres.exe 发现电脑中存在

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

编译Busybox时,出现错误fatal error: curses.h: No such file or directory

1 scripts/kconfig/mconf.c: In function ‘exec_conf’: 2 scripts/kconfig/mconf.c:481:2: warning: ignoring return value of ‘pipe’, declared with attribute warn_unused_result [-Wunused-result] 3 pipe(pipefd); 4 ^ 5 SHIPPED scripts/kconfig/zconf.tab.c 6 SH

mysql-python 安装错误 fatal error C1083: Cannot open include file: &#39;config-win.h&#39;: No such file or directory

安装mysql-python之前, 请先安装setuptools. https://pypi.python.org/pypi/setuptools/7.0 下载mysql-python. 下载源码包. https://pypi.python.org/pypi/MySQL-python/1.2.5 解压后执行 python setup.py install 提示错误: fatal error C1083: Cannot open include file: 'config-win.h': No s

“fatal error C1010”错误解决的三种方法

尝试写了一个简单的类文件,但在编译的时候提示错误,具体错误信息如下: fatal error C1010: unexpected end of file while looking for precompiled header directive 从网上搜到了一些解决办法,具体办法如下 : 1.在类的实现cpp文件的头部第一行加上“#include "stdafx.h"”. 2.关闭预编译头文件选项.具体步骤如下: Project Settings(Alt+F7) -> C/C+

Q2:关于数组的解包错误 fatal error: Can&#39;t unwrap Optional

今天遇到一个小问题,想自己做个小项目,在一个controller中声明一个数组用于存储从数据库读来的内容,声明为 var bugCgs:[BugCategory],其实对应形式就是var className:[classType],很不巧,这样写会报错,如下图: 我自然知道在swift中变量都必须要有初始值(当然也不是一定的 例如在一个函数中就不需要).xcode提示要不要加一个required initializer 'init(coder:)'? 由于对可选类型还是有一定理解,我不假思索改成