8

Symfony2 でTwig のdump関数を使用しています。その指示に従って Symfony を構成しました。

page変数とorders配列があります。dumpページでは機能しますが、注文では機能しません。注文時に呼び出すと、白い画面が表示されます-phpエラーなどはありません。これをデバッグする方法がわかりません。

何か案は?

4

5 に答える 5

9

少し説明

この場合の白い (空白の) 画面は、PHP の致命的なエラー: 許容メモリ サイズが使い果たされたことを意味します。調査中に、VarDumper コンポーネントがインストールされているときにtwig がvar_dump関数を使用していることがわかりました。

VarDumper コンポーネントがインストールされていない場合に備えて動作するように作られていると思いますがdump()、symfony の VarDumper コンポーネントのドキュメントでカバーされている twig の機能は、複雑なソリューションのようです。

そのため、ネイティブの代わりにVarDumper のdump()関数を使用var_dump()すると、メモリの問題が解決されます(VarDumper は結果のダンプ収集を適切な量に制限するため)。また、VarDumperdump()はより便利な結果を提供します。ツリーの葉をクリックして、その内容を表示/非表示にできます。

正確に何をする必要がありますか

  • VarDumper コンポーネントがインストールされていない場合はインストールします
  • ファイルに移動: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"
于 2015-03-27T13:40:11.323 に答える
1

同じ問題があり、memory_limit を 1Gb まで増やしても解決しませんでした。私の場合、私は

    {{ dump() }} 

パラメータなし(現在のテンプレートのコンテキストで使用可能なすべての変数を表示するため。私の場合、https ://stackoverflow.com/a/11500141/2166261 が役立ちましたが、memory_limitの問題は引き続き発生します)

于 2013-03-13T16:24:23.400 に答える
0

さまざまな原因が考えられるため、この問題に対する唯一の答えはおそらくありません。他の人が示唆しているように、PHP のメモリ制限を増やすと役立つ場合があります。私の場合、これは役に立ちませんでしたが、xdebug をインストールすることで問題を解決できました。

これまでのところ、この問題を解決するためのチェックリストは次のようになります。

  1. 最新バージョンの xdebug がインストールされていることを確認します
  2. それでも解決しない場合は、PHP のメモリ制限を増やしてみてください
于 2014-08-10T19:57:41.367 に答える
0

ほとんどの場合、PHP のメモリ制限に達しています。php.ini で増やしてみてください

于 2013-02-16T20:52:37.833 に答える