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)