首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

徹底解決 PHP「Cannot modify header information - headers already sent」錯誤

     編輯:PHP 相關知識

錯誤原因分析

HTTP 協議要求標頭必須在任何內容輸出之前發送。常見觸發場景:

  • setcookie()、session_start()、header() 前有 echo、HTML 空白、BOM 標記
  • include/require 的文件末尾有多餘空行或輸出
  • 文件編碼為 UTF-8 with BOM

解決方案 (按推薦順序)

方案一:開啟輸出緩衝 (最徹底)

在 php.ini 中設置:

output_buffering = On

或腳本頂部添加:

ob_start();

腳本結束前:

ob_end_flush();

方案二:嚴格控制輸出順序

  • 所有 header()、setcookie()、session_start() 放在文件最頂端
  • 確保 <?php 前無任何字符 (含空白、BOM)
  • 關閉 PHP 標籤 ?> 以避免尾部空白輸出

方案三:檢查文件編碼

使用 Notepad++、VS Code 等編輯器,將文件保存為 UTF-8 無 BOM 格式。

快速排查技巧

錯誤提示中 headers already sent by (output started at ...) 後的文件路徑和行號,直接定位輸出源頭。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved