0

应该在屏幕底部呈现的 Web 分析器栏抛出“达到 '100' 的最大函数嵌套级别”错误,因为它陷入了无限循环,试图在生成的代码中加载相同的模板文件。

这是导致无限循环的两行代码。

0.5359    7623912  96. __TwigTemplate_12d25e382d980637bca9380c409ddd59->__construct(???) /var/www/site/app/cache/dev/classes.php:7999
0.5359    7624296  97. Twig_Environment->loadTemplate(???, ???) /var/www/site/app/cache/dev/twig/12/d2/5e382d980637bca9380c409ddd59.php:10

我检查了源代码,似乎同一个 Twig 模板正在其构造函数中加载自身。我在下面包含了这两个文件的源代码片段。我确定我需要包括更多,但我不确定要包括什么。

应用程序/缓存/dev/classes.php

public function loadTemplate($name, $index = null)
{
    $cls = $this->getTemplateClass($name, $index);
    if (isset($this->loadedTemplates[$cls])) {
        return $this->loadedTemplates[$cls];
    }
    if (!class_exists($cls, false)) {
        if (false === $cache = $this->getCacheFilename($name)) {
            eval('?>'.$this->compileSource($this->loader->getSource($name), $name));
        } else {
            if (!is_file($cache) || ($this->isAutoReload() && !$this->isTemplateFresh($name, filemtime($cache)))) {
                $this->writeCacheFile($cache, $this->compileSource($this->loader->getSource($name), $name));
            }
            require_once $cache;
        }
    }
    if (!$this->runtimeInitialized) {
        $this->initRuntime();
    }
    return $this->loadedTemplates[$cls] = new $cls($this); // CALLS THE CONSTRUCTOR BELOW
}

应用程序/缓存/开发/树枝/12/d2/5e382d980637bca9380c409ddd59.php

public function __construct(Twig_Environment $env)
{
    parent::__construct($env);

    $this->parent = $this->env->loadTemplate("WebProfilerBundle:Profiler:layout.html.twig"); // CALLS THE loadTemplate METHOD ABOVE

    $this->blocks = array(
        'body' => array($this, 'block_body'),
        'panel' => array($this, 'block_panel'),
    );
}
4

2 回答 2

0

我无法发表评论,因此我将其发布为解决方案。对不起。

有时,在服务器配置或 htaccess 中定义的某些重定向或重写规则会导致无限的重写或重定向。我建议修改你的路线,比如改变

/foo/bar/1

/foo/bar/1/

或者,尝试检查您的重定向或重写规则。如果你 100% 确定你的代码是正确的,我相信你会赶上一些东西。

于 2015-03-06T23:35:00.410 回答
0

这是旧的,但我最近遇到了同样的问题。

我尝试清除我的缓存,增加我的 xdebug 限制,并检查我的 twig 文件中的循环包含,但这些都没有帮助。

对我来说,解决方案是确保在我的composer.json文件中加载稳定版本的 twig,方法是将以下代码添加到我的 require 部分:

"twig/twig": "@stable"
于 2015-08-29T06:58:42.007 回答