溫馨提示×

PHP HEADERS_SENT錯誤如何捕獲

PHP
小樊
81
2024-10-23 09:47:15
欄目: 編程語言

在 PHP 中,當輸出已經發(fā)送給瀏覽器時,嘗試再設置 HTTP 頭部信息會導致 “Headers already sent” 錯誤。為了捕獲這個錯誤,你可以使用 ob_start()ob_get_clean() 函數來捕獲輸出緩沖區(qū)的內容,并在發(fā)送任何頭部信息之前進行檢查。

下面是一個示例代碼:

<?php
// 檢查是否已經發(fā)送了頭部信息
if (headers_sent()) {
    // 如果已經發(fā)送了頭部信息,則輸出錯誤消息并退出腳本
    echo 'Headers already sent in ' . __FILE__ . ' on line ' . __LINE__;
    exit(1);
}

// 開始輸出緩沖區(qū)
ob_start();

// 在這里編寫你的 PHP 代碼
echo 'Hello, World!';

// 清空輸出緩沖區(qū)并捕獲其內容
$output = ob_get_clean();

// 檢查是否有輸出
if ($output !== '') {
    // 如果有輸出,則發(fā)送頭部信息
    header('Content-Type: text/html; charset=utf-8');
    echo $output;
} else {
    // 如果沒有輸出,可以在這里處理其他邏輯
}
?>

在這個示例中,我們首先檢查是否已經發(fā)送了頭部信息。如果已經發(fā)送了頭部信息,我們輸出錯誤消息并退出腳本。接下來,我們使用 ob_start() 開始輸出緩沖區(qū),然后編寫你的 PHP 代碼。最后,我們使用 ob_get_clean() 清空輸出緩沖區(qū)并捕獲其內容。如果有輸出,我們會發(fā)送頭部信息并輸出內容;如果沒有輸出,你可以在這里處理其他邏輯。

0