當 PHP 出錯時,有時會輸出額外的頭信息,導致 “Headers already sent” 錯誤
檢查文件編碼:確保你的 PHP 文件以 UTF-8 無 BOM 編碼格式保存。BOM 是字節順序標記,可能會導致輸出額外的頭信息。你可以使用文本編輯器(如 Notepad++ 或 Visual Studio Code)將文件轉換為 UTF-8 無 BOM 編碼。
確保輸出語句在發送頭之前:檢查你的 PHP 代碼,確保沒有任何輸出(例如:echo、print 等)語句在 header() 函數之前。如果有,將這些語句移動到 header() 函數之后。
移除多余的空格和換行符:檢查 PHP 文件的開頭和結尾,確保沒有多余的空格或換行符。這些字符可能會導致輸出額外的頭信息。你可以使用文本編輯器刪除這些字符。
使用輸出緩沖:在 PHP 文件的頂部添加 ob_start() 函數,以啟用輸出緩沖。這將捕獲所有輸出,直到 ob_end_flush() 或 ob_flush() 函數被調用。這樣,你可以確保在發送頭信息之前沒有輸出被發送到瀏覽器。示例代碼如下:
<?php
ob_start();
// 你的代碼
header("Content-Type: text/html; charset=utf-8");
ob_end_flush();
?>
<?php
ini_set('output_buffering', 'On');
// 你的代碼
header("Content-Type: text/html; charset=utf-8");
?>
嘗試以上方法后,“Headers already sent” 錯誤應該已經解決。如果問題仍然存在,請仔細檢查你的代碼,確保沒有其他潛在問題。