symfony 错误处理程序的产品环境中缺少供应商资产

Missing vendor asset in prod env of symfony error-handler

升级到 symfony 5 后,我发现了 symfony 的错误处理程序缺少资产的警告:

php.WARNING: Warning: include(/var/www/projekt/nakade/vendor/symfony/error-handler/ErrorRenderer/../Resources/assets/css/error.css): failed to open stream: No such file or directory {"exception":"[object] (ErrorException(code: 0):

调查此问题后,我发现 prod 环境中缺少 assets 目录,而在 dev env 目录中 css class 存在。 我假设 css 丢失了,因为该组件只是在 require-dev 中。

"require-dev": { ... "symfony/browser-kit": "5.0.*", "symfony/css-selector": "5.0.*", "symfony/debug-bundle": "5.0.*", "symfony/maker-bundle": "^1.13", "symfony/phpunit-bridge": "^5.0", "symfony/profiler-pack": "1.0.*", "symfony/test-pack": "^1.0", "symfony/var-dumper": "5.0.*" },

环境变量设置在 .env.local APP_ENV=prod 由于缺少 robots.txt 和 sitemap.xml,google-bot 显示了错误消息。这是固定的错误,警告消失了,但我对此很好奇。

有人知道如何解决这个问题吗?

通过深入查看堆栈跟踪找到答案:

[2020-04-16 23:33:35] php.CRITICAL: Uncaught Exception: The controller for URI "/robots.txt" is not callable. Controller "App\Controller\MyExceptionController" does neither exist as service nor as class.. {"exception":"[object] (InvalidArgumentException(code: ...

这是对 twig.yaml 中弃用的暗示:

之前:

twig: exception_controller: 'App\Controller\MyExceptionController' ...

之后:

twig: exception_controller: null ...