Symfony Route 中断调试工具栏

Posted

技术标签:

【中文标题】Symfony Route 中断调试工具栏【英文标题】:Symfony Route breaks Debug Toolbar 【发布时间】:2014-07-29 03:12:39 【问题描述】:

在通过控制器加载我的 Twig-Template 并显示它之后 - 需要一段时间,我会显示此错误:“加载 Web 调试工具栏时发生错误(404:未找到)。”

现在我研究了大约 2 个小时,但找不到适合我的解决方案!我找到了导致这个问题的“东西”——它的路线如下:

showPage:
pattern: /a/b/c
defaults:  _controller: MyBundle:Page:show, a: null, b: null, c: / 
requirements:
    b: \d+
    c: .+

我更改了 routing_dev.yml 中的顺序,以便在 WDT 之前导入 routing.yml,以便它可以覆盖它 - routing_dev.yml 现在看起来像:

_main:
    resource: routing.yml

_wdt:
    resource: "@WebProfilerBundle/Resources/config/routing/wdt.xml"
    prefix:   /_wdt

_profiler:
    resource: "@WebProfilerBundle/Resources/config/routing/profiler.xml"
    prefix:   /_profiler

_configurator:
    resource: "@SensioDistributionBundle/Resources/config/routing/webconfigurator.xml"
    prefix:   /_configurator

我使用当前的 Symfony-Version 2.5.0 - .htaccess 文件是 Symfony2-Repo 的默认文件 - mod_rewrite 和 mod_alias 已启用!

如果我转到一个不存在的页面并且 symfony 说没有找到“bla”的路径 - 工具栏可以工作。

您知道如何为 WDT-Routes 设置例外吗?

【问题讨论】:

你有没有尝试运行app/console router:debug & app/console router:match 命令,这些可能会给你一个线索 你尝试在 symfony profiler 路由之后导入你的 _main 资源吗? @tawfekov thx - 发现路由正常 @Igor 在我发现错误后它也以这种方式工作(我重置了它,因为它是通过从 symfony repo 设置项目的默认顺序)。是否有可能启用某种错误报告给 EventListener - 看看那里是否发生了错误? (在我的情况下,我想将 QueryBuilder-Object 传递给 $dbalConnection->fetchAll() 这是不可能的,因为方法 self 要求 Query 是字符串。 【参考方案1】:

有很多事情可能会破坏工具栏,最常见的事情之一是无正面错误。因此,请确保在拔出所有头发之前检查所有日志。

在我的例子中,有 "NOTICE: php message: PHP Fatal error: Access level to UserBundle\Entity\User::$id must be protected (as in class FOS\UserBundle\Model\User) or weaker in ...",因为我的 id 是私有的。

修复后工具栏又出现了。

【讨论】:

【参考方案2】:

在这里聚会迟到了,但我遇到了同样的情况,真的很难找到答案。这正是 nPoday 在 2014 年 6 月 9 日在这里所说的:我有一个听众抛出了一个错误,尽管它与 Doctrine 无关。这是 AWS 包装器的问题,它甚至没有在启动时被应用程序触发,也没有被我正在加载的页面触发。一定要检查你的监听器,一一禁用,你可能会发现调试工具栏突然开始工作了。

【讨论】:

【参考方案3】:

打开日志文件app/logs/dev.log 并搜索CRITICAL 关键字,您将找到Symfony 未捕获的Fatal Error。尝试修复它。

【讨论】:

【参考方案4】:

我错误地认为这是一个路由问题 - 在使用 Doctrine DBAL QueryBuilder 并试图将对象传递给 DBAL-Connection 的“fetchAll”的 EventListener 中引起的问题。

这导致错误,但 Symfony 并没有告诉任何地方它只显示我的站点并说 404 用于调试工具栏。

【讨论】:

以上是关于Symfony Route 中断调试工具栏的主要内容,如果未能解决你的问题,请参考以下文章

为啥 Symfony 调试工具栏中的计时器(分析器)超过 100% 时间?

Symfony 2 - 加载Web调试工具栏时出错(404:Not Found)

symfony2显示调试工具栏

如何调试 Symfony StreamedResponse?

加载 Web 调试工具栏时出错

路由在调试列表中,但在 Symfony 4 中返回 404