簡體   English   中英

輸出緩沖區內的錯誤

[英]Errors inside of output buffer

我的輸出緩沖區有問題。 我正在緩沖腳本並使用回調打印結果。 問題是,如果在任何時候拋出錯誤,則什么也沒有顯示,並且我得到了空白屏幕。 我嘗試設置自己的自定義錯誤處理程序,但似乎沒有任何效果。 我感覺這是因為錯誤導致我的緩沖區調用回調方法而不是我的錯誤處理程序。 要么是因為我將錯誤處理程序作為靜態方法,但是進行更改會導致其他問題。

我真的很感激任何幫助,因為這讓我難過!

public function constructor()
{
    ob_start(array(__CLASS__, 'render'));
    self::$buffer_level = ob_get_level();

    set_error_handler(array(__CLASS__, 'exception_handler'));
    set_exception_handler(array(_CLASS__, 'exception_handler'));

    RUNNING MY SCRIPT HERE

    ob_end_flush();
}

public static function exception_handler($exception, $message = NULL, $file = NULL, $line = NULL)
{
    while (ob_get_level() > self::$buffer_level)
    {
    ob_end_clean();
    }

    echo $exception.' - '.$message.' - '.$file.' - '.$line.'<br/>';
}

我建議在PHP中打開錯誤日志記錄,默認情況下會將錯誤發送到apache錯誤日志。 您也可以嘗試打開track_errors,但我認為日志是最好的選擇。 如果您無權訪問apache日志,則可能必須手動記錄。

使用輸出緩沖和其他“幕后”東西(例如ajax)時,日志文件和跟蹤策略至關重要。

您還可以查看output_buffering設置。 看到這篇文章: http : //thinkpositivesoftware.blogspot.com/2009/03/have-blank-php-page.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM