- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
嗯......这是我的情况:我正在开发一个框架,我目前正在开发错误处理功能。我也想处理错误处理错误!好吧......更好地解释:如果我有一个错误,无论是否致命,都会引发异常(在非 fatal error 的情况下)并伪造 Exception 用于 fatal error 。异常由“记录器”处理,它可以处理错误在控制台(浏览器)上回显或将其存储在文件中。问题是当记录器内发生第二个 fatal error 时。为了捕捉它,我使用了 PHP 缓冲区 (ob_start())。在这个函数内部不应该发生错误,任何人......换句话说......这是错误跟踪的最后一级。我可以回显错误,但我想使用 PHP 错误日志系统注册它们(如果没有达到最后一级则禁用)。这可以使用 error_log 函数来实现。在 error_log 函数的 PHP 文档中:
“成功时返回 TRUE,失败时返回 FALSE。”
嗯……这就是我需要的。但我很害怕,因为我不知道这个函数是否会产生 fatal error (内部实现)或者只是返回 TRUE/FALSE。我在 localhost SMTP 中使用邮件选项 (1) 进行了测试,但失败了(正如预期的那样!),生成了一条警告消息。然后缓冲区崩溃在浏览器上显示空白页面(这是我不希望发生的)。这个问题可以通过使用 fsockopen 检查 smtp 连接并将返回值归因于类变量来解决。在缓冲函数内部,这个变量值被验证。如果为 TRUE,则调用带有电子邮件选项的 error_log。但是对于带有选项 0(php 文件日志)和 3(其他文件)的 error_log?
这是我的日志记录类的相关部分:
public function error_buffer($buffer) {
$error = error_get_last ();
if ($error && ($error ['type'] & E_FATAL && $this->_errhe)) {
$this->error_handler_error ( $error ['type'], $error ['message'], $error ['file'], $error ['line'] );
if (ENV === 'production') {
return 'error 500';
}
return ob_get_contents ();
}
return $buffer;
}
public function error_handler_error($errno, $errmsg, $errfile, $errline) {
var_dump ( $errfile );
/* GENERATES WARNING MESSAGE... AND BLANK PAGE!
* Here is possible to do: if($this->_email) { error_log() }...
*/
@error_log ( $errmsg, 1, 'lucas@lucas.com' );
// error_log($errmsg, 0);
}
最佳答案
@ 不会阻止错误的发生,它只会阻止它被显示。因此,如果 mail() 失败,则 error_log 到电子邮件(选项 1)也将失败 - 出现错误。
因此,可能发生的事情是 error_log() 调用会导致调用错误处理函数的错误,调用 error_log() 会导致调用错误处理函数的错误,调用 error_log() 会导致调用错误的错误错误处理函数,它调用 error_log() 导致错误......你明白了要点。
如果是这样的话,我能很快想到的解决方案是:
1 - 在 error_buffer 中包含一个静态变量来表示“我当前正在处理一个错误,不要再处理了(或者只是在屏幕上显示消息 - 但尊重 ini 设置“display_errors”)。
2 - 在你的错误函数中关闭你的错误处理以默认 PHP 函数处理它。
为什么不调用“error_log ($errmsg, 1, 'lucas@lucas.com');”在错误函数之外(我们没有@),看看你的错误处理程序是否被调用?
关于php - PHP error_log 函数能否在缓冲区内生成 fatal error ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10610651/
reqwest v0.9 将 serde v1.0 作为依赖项,因此实现 converting serde_json errors into reqwest error . 在我的代码中,我使用 se
我有这个代码: let file = FileStorage { // ... }; file.write("Test", bytes.as_ref()) .map_err(|e| Mu
我只是尝试用angular-cli创建一个新项目,然后运行服务器,但是它停止并显示一条有趣的消息:Error: No errors。 我以这种方式更新了(希望有帮助):npm uninstall -g
我从我的 javascript 发送交易 Metamask 打开传输对话框 我确定 i get an error message in metamask (inpage.js:1 MetaMask -
这个问题在这里已经有了答案: How do you define custom `Error` types in Rust? (3 个答案) How to get a reference to a
我想知道两者之间有什么大的区别 if let error = error{} vs if error != nil?或者只是人们的不同之处,比如他们如何用代码表达自己? 例如,如果我使用这段代码: u
当我尝试发送超过 50KB 的图像时,我在 Blazor 服务器应用程序上收到以下错误消息 Error: Connection disconnected with error 'Error: Serv
我有一个error-page指令,它将所有异常重定向到错误显示页面 我的web.xml: [...] java.lang.Exception /vi
我有这样的对象: address: { "phone" : 888, "value" : 12 } 在 WHERE 中我需要通过 address.value 查找对象,但是在 SQL 中有函数
每次我尝试编译我的代码时,我都会遇到大量错误。这不是我的代码的问题,因为它在另一台计算机上工作得很好。我尝试重新安装和修复,但这没有帮助。这是整个错误消息: 1>------ Build starte
在我的代码的类部分,如果我写一个错误,则在不应该的情况下,将有几行报告为错误。我将'| error'放在可以从错误中恢复的良好/安全位置,但是我认为它没有使用它。也许它试图在某个地方恢复中间表情? 有
我遇到了 csv 输入文件整体读取故障的问题,我可以通过在 read_csv 函数中添加 "error_bad_lines=False" 来删除这些问题来解决这个问题。 但是我需要报告这些造成问题的文
在 Spring 中,验证后我们在 controller 中得到一个 BindingResult 对象。 很简单,如果我收到验证错误,我想重新显示我的表单,并在每个受影响的字段上方显示错误消息。 因此
我不知道出了什么问题,因为我用 Java 编程了大约一年,从来没有遇到过这个错误。在一分钟前在 Eclipse 中编译和运行工作,现在我得到这个错误: #A fatal error has been
SELECT to_char(messages. TIME, 'YYYY/MM/DD') AS FullDate, to_char(messages. TIME, 'MM/DD
我收到这些错误: AnonymousPath\Anonymized.vb : error BC30037: Character is not valid. AnonymousPath\Anonymiz
我刚刚安装了 gridengine 并在执行 qstat 时出现错误: error: commlib error: got select error (Connection refused) erro
嗨,我正在学习 PHP,我从 CRUD 系统开始,我在 Windows 上安装了 WAMP 服务器,当我运行它时,我收到以下错误消息。 SCREAM: Error suppression ignore
我刚刚开始一个新项目,我正在学习核心数据教程,可以找到:https://www.youtube.com/watch?v=zZJpsszfTHM 我似乎无法弄清楚为什么会抛出此错误。我有一个名为“Exp
当我使用 Jenkins 运行新构建时,出现以下错误: "FilePathY\XXX.cpp : fatal error C1853: 'FilePathZ\XXX.pch' precompiled
我是一名优秀的程序员,十分优秀!