php - 为什么 Slim Framework php ErrorHandler 不工作?

标签 php reporting slim slim-3

我无法让 phpErrorHandler 正常工作。我使用的是最新版本的 Slim,我的服务器运行的是 PHP 7.1。

use \Slim\App as App;
use \Psr\Http\Message\ServerRequestInterface as Request;
use \Psr\Http\Message\ResponseInterface as Response;

$app = new App([
    'errorHandler' => function ($c) {
        return function ($request, $response, $error) use ($c) {
            return $c['response']
                ->withStatus(500)
                ->withHeader('Content-Type', 'text/html')
                ->write('application error');
        };
    },
    'phpErrorHandler' => function ($c) {
        return function ($request, $response, $error) use ($c) {
            return $c['response']
                ->withStatus(500)
                ->withHeader('Content-Type', 'text/html')
                ->write('runtime error');
        };
    }
]);

当我从代码中抛出异常时,错误处理程序将被调用,并且我的输出是“应用程序错误”。但是,当我从代码中引发错误或引入语法错误时,不会调用 phpErrorHandler,并且根据我的设置,PHP 会生成带有堆栈跟踪的错误消息。

我尝试添加

ini_set('display_errors', 0); // do not produce the standard output when an error occurs
error_reporting(-1); // enable error reporting (is this required for Slim?)

但是我在该配置中所做的任何更改似乎都不会影响我的闭包是否被调用。

-编辑-

我尝试执行一段记录到控制台的 Javascript。这适用于 errorHandler,不适用于 phpErrorHandler。也很简单

die('oops');

在 phpErrorHandler 中不执行任何操作。看来回调根本没有被调用。

如果我尝试/捕获

$app->run();

我能够捕获错误。然而,这会导致一些我宁愿避免的令人讨厌的副作用。但这告诉我的是,它不是一个阻止我捕获错误的配置设置。

最佳答案

我也遇到了同样的问题,并且被提到 phpErrorHandler 功能的 Slim 3 文档稍微误导了。然而,直到 3.2.0 版本,phpErrorHandler 才被添加到 Slim 中: https://github.com/slimphp/Slim/releases/tag/3.2.0

如果您使用的是 Slim 版本 < 3.2.0,请尝试升级。

关于php - 为什么 Slim Framework php ErrorHandler 不工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49684070/

相关文章:

php - Slim Php Mysql Put方法空值,想更新4列,但只更新了1列,但结果显示成功

javascript - 如何在 RESTful 中使用 VisualCaptcha 与 AngularJS 和 slimPHP

php - 如何在 WordPress 中获取评论永久链接(使用 HTML anchor )?

c# - 报告(免费 || 开源)Winforms 中 Crystal Reports 的替代品

asp.net - 有没有任何工具可以查看针对数据库运行的查询?

java - BIRT rptdesign 无法识别添加为 .jar 的类

php - Laravel 5 - 在 Rest API 服务器上自定义 JSON 响应

php - ON DUPLICATE KEY UPDATE 在 PDO 中不起作用

php - 为基于 PHP/MySQL 关键字的搜索分配多个关键字