2014-12-19 52 views
1

我使用的是symfony 2.5.8,当通过命令{{dump(whatever)}}将vars放入树枝时,我的电脑死机,并在一段时间后,我得到一个错误页面,并从控制台下面的错误,我开始内置的服务器(与-v选项):Symfony2和Twig:{{dump()}}导致内置的服务器崩溃

Killed 
Built-in server terminated unexpectedly 

有谁有过同样的问题?有谁知道可能是什么原因?

我已经添加了以下的配置app/config/config_dev.yml

services: 
    custom.twig.extension.debug: 
     class: Twig_Extension_Debug 
     tags: 
      - { name: 'twig.extension' } 

提前感谢!

+0

内置的服务器不是很强大 - 它只是为简单的本地开发而设计的。我希望在抛弃小事情(简单变量)的情况下可以做到这一点,但是你有可能把重要的东西放进去,而且内存不足。 – 2014-12-19 10:12:42

+0

与apache(内部服务器错误)相同的东西。 可能我想转储的东西很大,但是这会导致服务器崩溃,这感觉很奇怪。 – Alberto 2014-12-19 10:25:23

+0

没有var可以倾倒?如果您尝试转储实体,则可能会超出内存限制。但尝试转储一些字符串或整数变种。 – 2014-12-19 10:46:53

回答

1

如果内存不足并且已安装xdebug模块,则可以在php.ini文件中设置选项xdebug.max_nesting_level = 100

这将截断转储的输出,将帮助您调试像关系

+0

安装了php5-xdebug并在php.ini中添加了建议的表达式。现在它打印了一些东西! – Alberto 2014-12-19 11:06:31

2

主义实体高度嵌套的对象。如果你想转储变量是指Doctrine2实体,它是一种常见的行为。

根据枝条的文件,转储使用本地的var_dump功能:

内部,嫩枝使用PHP的var_dump功能。

http://twig.sensiolabs.org/doc/functions/dump.html

在另一方面,Doctrine2文档说你不能只的var_dump实体:

延迟加载代理总是包含学说的EntityManager的和所有依赖的一个实例。因此var_dump()可能会转储一个非常大的递归结构,这是不可能呈现和读取的。您必须使用Doctrine \ Common \ Util \ Debug :: dump()将转储限制为可读取的级别。此外,您应该知道将EntityManager转储到浏览器可能需要几分钟的时间,并且Debug :: dump()方法在代理实例中忽略了它的任何出现。

http://doctrine-orm.readthedocs.org/en/latest/tutorials/getting-started.html?highlight=var_dump

正如你可以写一个使用Doctrine2的Doctrine\Common\Util\Debug::dump()方法倾出实体一根树枝扩展的解决方案。

1

由于Symfony 2.6,你可以使用VarDumper组件的dump()任何对象。

您应该覆盖的树枝通过使用扩展名(由你代替命名空间)的{{ dump() }}

FUZ /的appbundle /嫩枝/分机/ DebugExtension.php

<?php 

namespace Fuz\AppBundle\Twig\Extension; 

class DebugExtension extends \Twig_Extension 
{ 

    public function getFunctions() 
    { 
     return array (
       new \Twig_SimpleFunction('dump', array('Symfony\Component\VarDumper\VarDumper', 'dump')), 
     ); 
    } 

    public function getName() 
    { 
     return 'FuzAppBundle:Debug'; 
    } 

} 

FUZ /的appbundle /资源/配置/服务。阳明海运

app.twig.debug_extension: 
    class: %app.twig.debug_extension.class% 
    arguments: [] 
    tags: 
     - { name: twig.extension } 

enter image description here