Symfony 2.7升级后出现Twig错误:“未启用”native_profiler“扩展程序

时间:2015-06-16 07:38:49

标签: symfony phpunit twig

升级Symfony后,composer.json

  • “symfony / symfony”:“2.4。*”,
  • “symfony / symfony”:“2.7。*”,

运行phpunit测试时出错。在env devprod中,一切正常。

日志输出:

   request.CRITICAL: Uncaught PHP Exception Twig_Error_Runtime: "The native_profiler" extension is not enabled in "@WebProfiler/Profiler/toolbar_js.html.twig"

6 个答案:

答案 0 :(得分:6)

如果调试模式打开,则自动打开twig本机配置文件扩展,如果在Symfony 2.7中关闭调试模式,则会关闭。因此,如果在树枝模板上使用调试模式预热缓存,则会在启用探查器的情况下呈现。 但是如果测试在关闭调试时运行(例如使用Kris Wallsmith解决方案),则在测试中禁用扩展(但仍在预渲染模板中启用),这会导致错误。 解决方案:在运行测试之前,请关闭调试模式清除缓存。

  

app / console cache:clear --env = test --no-debug

如果没有twig profiler,缓存将被清除并预热。

答案 1 :(得分:1)

我今天遇到了同样的问题,但略有不同。最后我发现,TwigProfiler会自动在调试模式下启用。 在KernelTestCase.php中,我发现:

isset($options['debug']) ? $options['debug'] : true

所以在我的TestCases中我添加了'debug'=>选项。是的,它再次起作用。

答案 2 :(得分:1)

我的jenkins也有类似的错误。我们的CI工作运行(1)PHPUnit测试,而不是(2)使用LiipFunctionalTestBundle进行功能测试,最后(3)进行量角器测试。

twig模板由功能测试(2)编译,它将内核配置为处于调试模式。然而,Protractor测试在测试环境中启动PHP服务器但不在调试模式下启动。所以树枝模板不兼容。我通过删除步骤(2)和(3)之间的缓存来解决问题。

答案 3 :(得分:0)

更改调试模式后清除缓存似乎已解决了我的问题。

答案 4 :(得分:0)

在使用--no-debug

生成javascript翻译文件时,我也必须使用bazinga:js-translation:dump开关

例如像这个命令

../app/console bazinga:js-translation:dump -vvv --no-debug -e stage

答案 5 :(得分:0)

尝试更新版本。从版本 1.18 1.24 对我有帮助。

使用Symfony 2.7和Sylius 0.13

更多信息: https://github.com/symfony/symfony/issues/15318 https://github.com/twigphp/Twig/pull/1824