1

のようなエラーが発生するたびにFatal error: Call to a member function getName() on a non-object in /var/www/...Controller.php on line 143、私の symfony2-app は prod-environment で空白のページを表示します。上記のメッセージは dev-environment で利用できます。このようなエラーに対して、prod-environment でカスタム ページを表示したいと考えています。どうすれば Symfony2 に実装できますか?

更新:kernel.event_listener私を助けるかもしれませんか?

4

2 に答える 2

5

symfonyでそれを実際に実装することはできません。致命的なエラーはsymfonyではなく、PHP拡張機能自体によって処理されます。致命的なエラーが発生したため、Symfonyコードの実行が終了することはありません。これは、phpがエラーを独自のデバイスで処理できるようにするためです。PHPのエラー処理はerror_reporting()によって設定され、error_handlerはset_error_handler()によって設定されます。開発環境では、phpエラーレポートすべてのエラーを表示するには、E_ALLに設定されます。実稼働環境では、エラーとデバッグメッセージは0に設定され、美的およびセキュリティ上の理由から表示されません(一部のエラーメッセージにはパスワードなどが表示される場合があります)。最善のアドバイスは、本番環境にデプロイする前にすべての致命的なエラーを修正することです。致命的なエラーのカスタムページをキャッチして表示するには、php setエラー処理(http://php.net/manual/en/function.set-error-handler.php )を使用して実行する必要があります。

致命的でないエラーの場合は、表示可能なカスタムエラーページビューを作成できます-http://symfony.com/doc/2.0/cookbook/controller/error_pages.html

于 2012-11-20T07:01:22.557 に答える
1

私はこのようにします:

クラスErrorExceptionHandler {

    関数 __construct() {
        register_shutdown_function(array($this, 'fatalErrorHandler'));
    }

    関数 fatalErrorHandler() {
        $error = error_get_last();
        if ($error['type'] === E_ERROR) {
            header('場所: /error-page-url');
        }
    }

}

ErrorExceptionHandler(); // app.php に追加

もちろん、名前空間などについて覚えておいてください。

于 2014-11-07T20:50:54.493 に答える