web-dev-qa-db-ja.com

Symfony4プロダクションモードエラー処理ページメモリが使い果たされました

プロジェクトを.envprodモードに設定しましたが、カスタムエラーページ以外はすべて機能しているようです。

私はこれを404 twigテンプレート:

{# templates/bundles/TwigBundle/Exception/error404.html.twig #}
{% include 'builder/layout/header.html.twig' with {'title': '404'} %}

<img src="{{ assets('img/not-found.jpeg') }}" class="img-responsive"
     id="error-not-found-img" />

<div class="http-error-msg-container">
    <h1>404! Page Not Found</h1>
    <p>Don't despair, go back to <a href="{{ path('dashboard') }}">Home</a> and try again.</p>
</div>

{% include 'builder/layout/footer.html.twig' %}

存在しないページ(たとえば/dashboard/giorgoirdjfisejf)に移動すると、空白のページが返されます。そこで、これをindex.phpファイルに追加しました。

ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(-1);

エラーを表示するために、私はこれを手に入れました:

致命的なエラー:107行目の/var/www/solomon/vendor/monolog/monolog/src/Monolog/Handler/StreamHandler.phpで許可されたメモリサイズ134217728バイトが使い果たされました(20480バイトを割り当てようとしました)

致命的なエラー:1行目の/var/www/solomon/vendor/symfony/debug/Exception/OutOfMemoryException.phpで許可されたメモリサイズ134217728バイトが使い果たされました(32768バイトを割り当てようとしました)

なぜこれがエラーを引き起こし、デバッグできないのかよくわかりません。 var/log/prod.logに何も表示されません。どうすれば解決できますか、それとももっと良い方法ですが、どうすればデバッグできますか?

更新

私のprod/monolog.yamlファイル

monolog:
    handlers:
        main:
            type: fingers_crossed
            action_level: error
            handler: nested
            excluded_404s:
                # regex: exclude all 404 errors from the logs
                - ^/
        nested:
            type: stream
            path: "%kernel.logs_dir%/%kernel.environment%.log"
            level: debug
        console:
            type:   console
            process_psr_3_messages: false
            channels: ["!event", "!doctrine"]

これは自動生成され、変更は加えていません

9
treyBake

Symfonyログファイルのファイルパーミッションを確認してください。 monologがpermission denied例外をキャッチし、それをログに書き込もうとして、同じエラーを何度もキャッチしているようです。

18
Vadim Ashikhman

私の場合、スタックトレースが常にStreamHandler.phpの行171を指していることを除いて、エラーメッセージはほとんど同じでした。問題は、ComposerがWindowsで実行され、結果のファイルがLinuxシステムにコピーされたため、誤ったディレクトリセパレータが使用され、Symfonyが/var/www/html/var\log/prod.log(バックスラッシュが含まれています)、これは明らかに失敗します。

したがって、後でアプリケーションを実行するのと同じOSでComposerを実行するようにしてください。

0
Chris