2017-05-22 10 views
1

問題PHPおっとエラーが明確なバッファを扱う

は、手続きスクリプトでPHPおっとプリティページハンドラの内容は、アプリケーションのバッファ出力からの部分コンテンツと混合されます。 フープはスクランブルされているように見えたり、隠されたhtmlタグ内に出力されたりすることがあります。おっと、ハンドラ・バッファの前に、前のバッファをクリアする方法

質問

?私にとって

答えて

0

次のソリューションワーカー:スクリプトの早い時点で

とおそらく唯一DEBUGまたはDEVELOPERモードでは、私はあなたがする必要がなかったとして:

if(DEVELOPER_DEBUG === true) 
    ob_start(); 

次に、私がしたことを宣言したところ:

if(DEVELOPER_DEBUG === true) 
{ 
    $_whoops = new \Whoops\Run(); 

    $_whoops->pushHandler(function(){ 
     ob_clean(); 
    }); 

    $_handler = new \Whoops\Handler\PrettyPageHandler(); 
    $_whoops->pushHandler($_handler); 
    $_whoops->register(); 
} 

これは私の使用法cで完璧に機能しましたWhoopsが自身の出力を開始する前に初期の生成されたバッファをクリアするための手続き型スクリプティングを行います。

それが動作する理由

のob_start()を複数回呼び出すことができ、フラッシュ又はクリア関数は、開始と同じ回数呼び出される必要があるバッファが順番に呼び出されました。

あなたのアプリケーションを独自のバッファで開始することで、それをクリアすることができるリソースにして、Whoopsは常に自身のバッファも起動します。したがって、最初のバッファ(アプリケーション)をクリアするハンドラを登録するエラーは、その前のバッファを消去することができます。

バッファ制御

例えば、のob_startの各呼び出しは、増分バッファが作成されます。

ob_startを3回呼び出す場合は、バッファリングされたすべてのコンテンツを出力するためにob_flushを3回呼び出す必要があります。

一度呼び出すと、次のob_startが宣言される前に生成されたコンテンツのみをクリアまたはフラッシュします。

OOPに適応可能です。

関連する問題