Почему после обновления до Symfony 4.4 у меня больше не появляются страницы предварительного просмотра ошибок? - PullRequest
1 голос
/ 17 июня 2020

Я только что обновил проект с Symfony 4.3 до 4.4. После обновления, когда у меня появляется ошибка, отображается страница производственной ошибки с сообщением «Ой! Произошла ошибка!», А не страница ошибки разработчика со всеми ее следами.

Также профилировщик не Не регистрирую страницу с ошибкой, я вижу все запросы в профилировщике, но не запросы с ошибками.

Если я смотрю журналы (я использую docker), я вижу php там ошибки:

$ docker logs php
172.21.0.3 -  17/Jun/2020:09:50:53 +0000 "GET /index.php" 500
[17-Jun-2020 09:50:53] WARNING: [pool www] child 6 said into stderr: "NOTICE: PHP message: PHP Fatal error:  Uncaught Twig\Error\SyntaxError: Unexpected "}". in /app/templates/professionals/artists/list.html.twig:26"
[17-Jun-2020 09:50:53] WARNING: [pool www] child 6 said into stderr: "Stack trace:"
[17-Jun-2020 09:50:53] WARNING: [pool www] child 6 said into stderr: "#0 /app/vendor/twig/twig/src/Lexer.php(292): Twig\Lexer->lexExpression()"
[17-Jun-2020 09:50:53] WARNING: [pool www] child 6 said into stderr: "#1 /app/vendor/twig/twig/src/Lexer.php(186): Twig\Lexer->lexVar()"
[17-Jun-2020 09:50:53] WARNING: [pool www] child 6 said into stderr: "#2 /app/vendor/twig/twig/src/Environment.php(542): Twig\Lexer->tokenize(Object(Twig\Source))"
[17-Jun-2020 09:50:53] WARNING: [pool www] child 6 said into stderr: "#3 /app/vendor/twig/twig/src/Environment.php(595): Twig\Environment->tokenize(Object(Twig\Source))"
[17-Jun-2020 09:50:53] WARNING: [pool www] child 6 said into stderr: "#4 /app/vendor/twig/twig/src/Environment.php(408): Twig\Environment->compileSource(Object(Twig\Source))"
[17-Jun-2020 09:50:53] WARNING: [pool www] child 6 said into stderr: "#5 /app/vendor/twig/twig/src/Environment.php(381): Twig\Environment->loadClass('__TwigTemplate_...', 'professionals/a...', NULL)"
[17-Jun-2020 09:50:53] WARNING: [pool www] child 6 said into stderr: "#6 /app/vendor/twig/twig/src/Environment.php(359): Twig\Environment->loadTemplate('professionals/a...')"
[17-Jun-2020 09:50:53] WARNING: [pool www] child 6 said into stderr: "#7 /app/vendor/symfony/twig-bridge/TwigEngine.php(135): Twig\Environment->load('professionals/a...')"
[17-Jun-2020 09:50:53] WARNING: [pool www] child 6 said into stderr: "#8 /app/vendor/symfony/twig-bridge/TwigEngine.php(54): Symfony\Bridge\Twig\TwigEngine->load(..."

Файл .env установлен на APP_ENV=dev

Ответы [ 2 ]

1 голос
/ 17 июня 2020

В Symfony 4.4 был выпущен компонент ErrorHandler, который заменил компонент Debug .

При этом расположение некоторых файлов изменилось.

Вы необходимо найти config/routes/dev/twig.yaml и удалить эти строки:

# config/routes/dev/twig.yaml
_errors:
    resource: '@TwigBundle/Resources/config/routing/errors.xml'
    prefix:   /_error

Вместо него создайте новый файл config/routes/dev/framework.yaml с этим содержимым:

# config/routes/dev/framework.yaml
_errors:
    resource: '@FrameworkBundle/Resources/config/routing/errors.xml'
    prefix:   /_error

Это должно восстановить старый страницы предварительного просмотра ошибок во время разработки.

0 голосов
/ 18 июня 2020

Обнаружил ошибку. Это была неправильная конфигурация пакета FosRestBundle.

У меня был файл friendsofsymfony / rest-bundle версии 2.5. Я обновился до 2.8 и в fos_rest-yml удалил конфигурацию «exception_controller: 'fos_rest.exception.controller: showAction».

После этого все снова заработало нормально.

...