首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >自定义页错误不起作用。(在生产中总是返回代码500)

自定义页错误不起作用。(在生产中总是返回代码500)
EN

Stack Overflow用户
提问于 2021-07-14 08:55:03
回答 1查看 752关注 0票数 0

所以我正在做一个项目,我想做一个定制的错误页面,比如404 500 .

因此,我阅读了symfony文档,我所要做的就是composer twig-pack,然后在这个树目录\templates\bundles\TwigBundle\Exception中添加error404.html.twig。要完成任务,我必须更改prod中的.env,以查看我的美容错误页面。

但是,当我试图输入一个错误的url,期望得到我的404时,我得到了一个500 (来自symfony的基本错误页面)。

我检查了我的日志,发现我得到了一个关键错误:

代码语言:javascript
复制
[2021-07-14T08:35:15.194689+00:00] request.ERROR: Uncaught PHP Exception Symfony\Component\HttpKernel\Exception\NotFoundHttpException: "No route found for "GET https://micro59/dejifosd"" at C:\wamp\www\Projects\micropro\vendor\symfony\http-kernel\EventListener\RouterListener.php line 136 {"exception":"[object] (Symfony\\Component\\HttpKernel\\Exception\\NotFoundHttpException(code: 0): No route found for \"GET https://micro59/dejifosd\" at C:\\wamp\\www\\Projects\\micropro\\vendor\\symfony\\http-kernel\\EventListener\\RouterListener.php:136)\n[previous exception] [object] (Symfony\\Component\\Routing\\Exception\\ResourceNotFoundException(code: 0): No routes found for \"/dejifosd/\". at C:\\wamp\\www\\Projects\\micropro\\vendor\\symfony\\routing\\Matcher\\Dumper\\CompiledUrlMatcherTrait.php:70)"} []
[2021-07-14T08:35:15.229712+00:00] php.CRITICAL: Uncaught Error: Symfony\Bridge\Twig\Extension\RoutingExtension::getPath(): Argument #1 ($name) must be of type string, null given, called in C:\wamp\www\Projects\micropro\var\cache\prod\twig\d5\d51256555fdd9ed9db40150aba9ba2f8325c04e57ae45e60937191a29447ddd2.php on line 37 {"exception":"[object] (TypeError(code: 0): Symfony\\Bridge\\Twig\\Extension\\RoutingExtension::getPath(): Argument #1 ($name) must be of type string, null given, called in C:\\wamp\\www\\Projects\\micropro\\var\\cache\\prod\\twig\\d5\\d51256555fdd9ed9db40150aba9ba2f8325c04e57ae45e60937191a29447ddd2.php on line 37 at C:\\wamp\\www\\Projects\\micropro\\vendor\\symfony\\twig-bridge\\Extension\\RoutingExtension.php:46)"} []
[2021-07-14T08:35:15.232242+00:00] request.CRITICAL: Uncaught PHP Exception TypeError: "Symfony\Bridge\Twig\Extension\RoutingExtension::getPath(): Argument #1 ($name) must be of type string, null given, called in C:\wamp\www\Projects\micropro\var\cache\prod\twig\d5\d51256555fdd9ed9db40150aba9ba2f8325c04e57ae45e60937191a29447ddd2.php on line 37" at C:\wamp\www\Projects\micropro\vendor\symfony\twig-bridge\Extension\RoutingExtension.php line 46 {"exception":"[object] (TypeError(code: 0): Symfony\\Bridge\\Twig\\Extension\\RoutingExtension::getPath(): Argument #1 ($name) must be of type string, null given, called in C:\\wamp\\www\\Projects\\micropro\\var\\cache\\prod\\twig\\d5\\d51256555fdd9ed9db40150aba9ba2f8325c04e57ae45e60937191a29447ddd2.php on line 37 at C:\\wamp\\www\\Projects\\micropro\\vendor\\symfony\\twig-bridge\\Extension\\RoutingExtension.php:46)"} []

我被困在这里了。我尝试了很多东西(作曲家更新,清除缓存.)但什么都没变。如果有人愿意帮助我,那将是非常感激的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-07-14 21:06:45

错误消息RoutingExtension::getPath()中的类和方法定义了一个Twig函数- 路径()。您的error404.html.twig文件使用该函数,但不具有所需的第一个参数('name',路由名称)-或传递给它的值为null。

如何自定义错误页有一个简单的错误页面模板,并且有一个示例路径/路由名{{ path('homepage') }}

您可以获得到bin/console debug:router到目前为止可用路由的列表--它必须是框架所知道的,否则它会抛出一个关于未知路由的错误。

它还有一个.yaml,您可以使用它使错误页在开发中可用(您的控制器很好,这会更干净、更容易--而且只在开发中可用,因为只有当APP_ENV变量‘dev’时才会读取APP_ENV/目录中的路径)。

如果您还没有,那么composer require debug-pack和任何错误--包括您的‘/ error 404’页面上的错误--都会显示一个“大友好错误页”,还应该添加许多有用的信息--通常包括在小枝模板中显示文件和行。

在这个特殊的例子中,由于错误的类型,它不能在Twig库内部(并且来自PHP类型系统)中很深的位置,不是由Symfony或twig直接发现的错误--但是它将在堆栈跟踪中有一个链接来显示已编译的小枝模板(在./var/cache/dev/ twig /.中的一个随机命名的文件中),它还显示了在小枝模板中调用->getPath();的位置--这样您就可以在实际的.twig文件中跟踪它(它在模板中添加注释以帮助)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68374970

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档