我在Symfony2中使用Twig的dump函数。我已根据its instructions配置了Symfony。
我有一个page
变量和一个orders
数组。 dump
适用于页面,但不适用于订单。当我在订单上调用它时,我得到一个白色屏幕 - 没有php错误或任何东西。我不知道如何调试这个。
有什么想法吗?
答案 0 :(得分:7)
在这种情况下,白色(空白)屏幕表示PHP致命错误:允许的内存大小耗尽。在调查期间,我发现了一些奇怪的事情: twig使用var_dump
函数,而我安装了VarDumper组件。
我认为如果没有安装VarDumper,而且在symfony的VarDumper组件文档(如复杂的解决方案)中涵盖了twig的dump()
函数,那么它可以解决这个问题,这很奇怪。
所以,使用VarDumper的dump()
函数而不是本地var_dump()
解决了内存问题(因为VarDumper将结果转储集合限制到足够的数量)。另外VarDumper的dump()
提供了更方便的结果 - 您可以点击树叶来显示/隐藏其内容。
vendor/twig/twig/lib/Twig/Extension/Debug.php
twig_var_dump
功能var_dump()
来电替换为dump()
ob_start() + ob_get_clean()
构造(这是必需的
如果您使用var_dump()
,因为它会立即回应数据,但dump()
会起作用
更聪明)OR
使用此复制+替换整个函数;)
function twig_var_dump(Twig_Environment $env, $context)
{
if (!$env->isDebug()) {
return;
}
// ob_start();
$count = func_num_args();
if (2 === $count) {
$vars = array();
foreach ($context as $key => $value) {
if (!$value instanceof Twig_Template) {
$vars[$key] = $value;
}
}
dump($vars);
} else {
for ($i = 2; $i < $count; $i++) {
dump(func_get_arg($i));
}
}
// return ob_get_clean();
}
PS:问题是在2013年问的,但我希望它有所帮助,因为我现在遇到了这个问题。
我的背景:
"symfony/symfony": "2.5.*"
"symfony/var-dumper": "~2.6"
答案 1 :(得分:2)
我有同样的问题,将memory_limit增加到1Gb并没有帮助。 在我的情况下,我想打电话给
{{ dump() }}
没有参数(查看当前模板上下文中的所有可用变量。在我的情况下,以下帮助:https://stackoverflow.com/a/11500141/2166261,尽管memory_limit问题仍然存在)
答案 2 :(得分:0)
您很可能达到了PHP内存限制。尝试在php.ini
中增加它答案 3 :(得分:0)
这个问题可能没有单一的答案,因为一系列事情可能会导致这个问题。正如其他人的建议,增加PHP的内存限制可能会有所帮助。在我的情况下,这没有帮助,但是,我能够通过安装xdebug解决问题。
到目前为止,似乎解决此问题的清单看起来像这样:
答案 4 :(得分:0)
Arkemlar的答案很好。
但是
在那之后,在我的案例中,twig dump()在使用phpunit的功能测试中导致了RuntimeException。