Php 为什么升级到Symfony 4.4后,我不再获得错误预览页面?

Php 为什么升级到Symfony 4.4后,我不再获得错误预览页面?,php,symfony,error-handling,symfony-4.4,Php,Symfony,Error Handling,Symfony 4.4,我刚刚将一个项目从Symfony 4.3更新为4.4。更新后,当我出现错误时,显示的页面是带有“Oops!出错!”的生产错误页面,而不是带有所有错误跟踪的开发错误页面 而且探查器没有记录错误页面,我可以在探查器中看到所有请求,但没有看到有错误的请求 如果我查看日志(我使用docker),我可以看到php错误: $ docker logs php 172.21.0.3 - 17/Jun/2020:09:50:53 +0000 "GET /index.php" 500 [17-Jun-2020 0

我刚刚将一个项目从Symfony 4.3更新为4.4。更新后,当我出现错误时,显示的页面是带有“Oops!出错!”的生产错误页面,而不是带有所有错误跟踪的开发错误页面

而且探查器没有记录错误页面,我可以在探查器中看到所有请求,但没有看到有错误的请求

如果我查看日志(我使用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(..."

Symfony 4.4中的
.env
文件设置为
APP_env=dev
,错误处理程序组件已发布

这样,一些文件的位置就改变了

您需要找到
config/routes/dev/twig.yaml
,并删除以下行:

#config/routes/dev/twig.yaml
_错误:
资源:'@TwigBundle/Resources/config/routing/errors.xml'
前缀:/\u错误
取而代之的是,创建一个包含以下内容的新文件
config/routes/dev/framework.yaml

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

这将在开发过程中恢复旧的错误预览页。

发现错误。这是对包FosRestBundle的错误配置

我在2.5版有friendsofsymfony/rest捆绑包。我升级到2.8,在fos_rest-yml中删除了配置“exception_controller:'fos_rest.exception.controller:showAction”


在那之后,一切都恢复正常。

您没有任何其他dotenv文件覆盖原始的
.env
?像
.env.local
是的,我有一个env.local,但不覆盖任何symfony变量。当页面加载正确时,我还能看到页面底部的探查器栏。是的,但它仍然不工作:(您好,感谢您的评论,但是在进行更改后,调试错误页面仍然没有显示,我还清除了缓存并删除了所有供应商文件夹,然后再次安装,但仍然显示了生产错误页面。