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

解決 PHP "Cannot modify header information" 警告:UTF-8 BOM 導致的輸出提前

     編輯:PHP 相關知識

解決 PHP "Cannot modify header information" 警告

在使用 CodeIgniter 開發微信公眾號項目時,頻繁遇到如下警告:

Severity: Warning
Message: Cannot modify header information - headers already sent by (output started at Filename: libraries/Session.php Line Number: 688)

根本原因

PHP 腳本在發送 HTTP Header 之前,已經有內容輸出(哪怕是一個空白字符、換行符、或 UTF-8 BOM 簽名)。常見於:

  • 文件保存為 UTF-8 with BOM 格式,BOM 位於文件最開頭,導致隱式輸出。
  • <?php 標籤前有空行、空格或不見字符。
  • 包含文件(include/require)產生輸出。

快速修復方案

  1. 使用編輯器(如 EditPlus、VS Code、PhpStorm)將報錯文件另存為 UTF-8 無 BOM 格式。
  2. 若所有頁面均報錯,優先檢查入口文件(如 index.php)及核心配置文件。
  3. 確保所有 PHP 文件:<?php 為文件第一字符,結尾 ?> 後無多餘字符(建議純 PHP 文件省略結尾標籤)。

實戰案例

本案例中,CI 根目錄下的 index.php 保存為 UTF-8 with BOM,導致每次請求都觸發警告。將其另存為 UTF-8 無 BOM 後,問題立即解決。

最佳實踐建議

  • 統一項目編碼為 UTF-8 無 BOM,在編輯器/IDE 中設置默認編碼。
  • 使用 .editorconfig 或項目規範強制統一格式。
  • 部署前執行腳本批量檢查並移除 BOM:find . -name "*.php" -exec sed -i '1s/^\xEF\xBB\xBF//' {} \;

「Cannot modify header information」看似棘手,實則多為編碼細節疏忽。養成良好的文件保存習慣,能從源頭杜絕此類低級錯誤。

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