Symfony2 でTwig のdump関数を使用しています。その指示に従って Symfony を構成しました。
page
変数とorders
配列があります。dump
ページでは機能しますが、注文では機能しません。注文時に呼び出すと、白い画面が表示されます-phpエラーなどはありません。これをデバッグする方法がわかりません。
何か案は?
Symfony2 でTwig のdump関数を使用しています。その指示に従って Symfony を構成しました。
page
変数とorders
配列があります。dump
ページでは機能しますが、注文では機能しません。注文時に呼び出すと、白い画面が表示されます-phpエラーなどはありません。これをデバッグする方法がわかりません。
何か案は?
この場合の白い (空白の) 画面は、PHP の致命的なエラー: 許容メモリ サイズが使い果たされたことを意味します。調査中に、VarDumper コンポーネントがインストールされているときにtwig がvar_dump
関数を使用していることがわかりました。
VarDumper コンポーネントがインストールされていない場合に備えて動作するように作られていると思いますがdump()
、symfony の VarDumper コンポーネントのドキュメントでカバーされている twig の機能は、複雑なソリューションのようです。
そのため、ネイティブの代わりにVarDumper のdump()
関数を使用var_dump()
すると、メモリの問題が解決されます(VarDumper は結果のダンプ収集を適切な量に制限するため)。また、VarDumperdump()
はより便利な結果を提供します。ツリーの葉をクリックして、その内容を表示/非表示にできます。
vendor/twig/twig/lib/Twig/Extension/Debug.php
twig_var_dump
機能var_dump()
へのすべての呼び出しを置き換えますdump()
ob_start() + ob_get_clean()
するため、使用する場合に必要です)var_dump()
dump()
また
これを使用して関数全体をコピー+置換します。
function twig_var_dump(Twig_Environment $env, $context)
{
if (!$env->isDebug()) {
return;
}
$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));
}
}
}
PS: 2013 年に質問されましたが、現在この問題が発生しているため、お役に立てば幸いです。
私の文脈:
"symfony/symfony": "2.5.*"
"symfony/var-dumper": "~2.6"
同じ問題があり、memory_limit を 1Gb まで増やしても解決しませんでした。私の場合、私は
{{ dump() }}
パラメータなし(現在のテンプレートのコンテキストで使用可能なすべての変数を表示するため。私の場合、https ://stackoverflow.com/a/11500141/2166261 が役立ちましたが、memory_limitの問題は引き続き発生します)
さまざまな原因が考えられるため、この問題に対する唯一の答えはおそらくありません。他の人が示唆しているように、PHP のメモリ制限を増やすと役立つ場合があります。私の場合、これは役に立ちませんでしたが、xdebug をインストールすることで問題を解決できました。
これまでのところ、この問題を解決するためのチェックリストは次のようになります。
ほとんどの場合、PHP のメモリ制限に達しています。php.ini で増やしてみてください