《PHP實戰:PHP錯誤Warning: Cannot modify header information - headers already sent by解決方法》要點:
本文介紹了PHP實戰:PHP錯誤Warning: Cannot modify header information - headers already sent by解決方法,希望對您有用。如果有疑問,可以聯系我們。
本日在測試以下代碼時遇到該錯誤:PHP實戰
出現差錯:PHP實戰
看了一些網上的辦法也沒解決,最后在php.ini配置output_buffering默認為4096就沒有遇到這個錯誤了:PHP實戰
output_buffering設置闡明:PHP實戰
??? Off: 表現關閉PHP輸出緩存
??? On: 打開無限大的輸出緩存
??? 4096: 打開大小為4096Byte的輸出緩存PHP實戰
默認情況下,php buffer是開啟的,并且該buffer默認值是4096,即4kb.你可以通過在php.ini配置文件中找到output_buffering配置.當echo,print等輸出用戶數據的時候,輸出數據都會寫入到php output_buffering中,直到output_buffering寫滿,會將這些數據通過tcp傳送給瀏覽器顯示.你也可以通過ob_start()手動激活php output_buffering機制,使得即便輸出超過了4kb數據,也不真的把數據交給tcp傳給瀏覽器,因為ob_start()將php buffer空間設置到了足夠大.只有直到腳本結束,或者調用ob_end_flush函數,才會把數據發送給客戶端瀏覽器.PHP實戰
關于output_buffering詳細先容可以參考:PHP實戰
補充:當然你也可以通過去除BOM辦理這個問題,建議以UTF-8無BOM格式編碼.感謝 @ihipop 童鞋
關于BOM,簡單的來說,軟件通過BOM來識別這個文件是否是UTF-8編碼.在Firefox早期的版本里,擴展是不能有BOM的,不過Firefox 1.5以后的版本已經開始支持BOM了.現在又發現,PHP也不支持BOM.PHP在設計時就沒有考慮BOM的問題,也就是說他不會忽略UTF-8編碼的文件開頭BOM的那三個字符.PHP實戰
其中有提到另一個麻煩:“受COOKIE送出機制的限制,在這些文件開頭已經有BOM的文件中,COOKIE無法送出(因為在COOKIE送出前PHP已經送出了文件頭),所以登入和登出功能失效.一切依賴COOKIE、SESSION實現的功能全部無效.”這個應該就是Wordpress后臺出現空白頁面的原因了,因為任何一個被執行的文件包括了BOM,這三個字符都將被送出,導致依賴cookies和session的功能失效,所以你也可能遇到如下錯誤:
PHP實戰
《PHP實戰:PHP錯誤Warning: Cannot modify header information - headers already sent by解決方法》是否對您有啟發,歡迎查看更多與《PHP實戰:PHP錯誤Warning: Cannot modify header information - headers already sent by解決方法》相關教程,學精學透。維易PHP學院為您提供精彩教程。