在使用 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 簽名)。常見於:
<?php 標籤前有空行、空格或不見字符。index.php)及核心配置文件。<?php 為文件第一字符,結尾 ?> 後無多餘字符(建議純 PHP 文件省略結尾標籤)。本案例中,CI 根目錄下的 index.php 保存為 UTF-8 with BOM,導致每次請求都觸發警告。將其另存為 UTF-8 無 BOM 後,問題立即解決。
.editorconfig 或項目規範強制統一格式。find . -name "*.php" -exec sed -i '1s/^\xEF\xBB\xBF//' {} \;「Cannot modify header information」看似棘手,實則多為編碼細節疏忽。養成良好的文件保存習慣,能從源頭杜絕此類低級錯誤。