HTTP 協議要求標頭必須在任何內容輸出之前發送。常見觸發場景:
setcookie()、session_start()、header() 前有 echo、HTML 空白、BOM 標記在 php.ini 中設置:
output_buffering = On
或腳本頂部添加:
ob_start();
腳本結束前:
ob_end_flush();
header()、setcookie()、session_start() 放在文件最頂端<?php 前無任何字符 (含空白、BOM)?> 以避免尾部空白輸出使用 Notepad++、VS Code 等編輯器,將文件保存為 UTF-8 無 BOM 格式。
錯誤提示中 headers already sent by (output started at ...) 後的文件路徑和行號,直接定位輸出源頭。