PHP錯誤Warning: Cannot modify header information - headers already sent by解決方案_php執行個體

來源:互聯網
上載者:User

今天在測試以下代碼時遇到該錯誤:

複製代碼 代碼如下:

session_start();
$_SESSION['username']=$username;
echo "<script language='javascript'>location.href='../admin.php';</script>";
exit();

出現錯誤:

複製代碼 代碼如下:

Warning: Cannot modify header information - headers already sent by...

看了一些網上的方法也沒解決,最後在php.ini配置output_buffering預設為4096就沒有遇到這個錯誤了:

output_buffering設定說明:

    Off: 表示關閉PHP輸出緩衝
    On: 開啟無限大的輸出緩衝
    4096: 開啟大小為4096Byte的輸出緩衝

預設情況下,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函數,才會把資料發送給用戶端瀏覽器。

關於output_buffering詳細介紹可以參考:

http://www.jb51.net/article/55707.htm

補充:當然你也可以通過去除BOM解決這個問題,建議以UTF-8無BOM格式編碼。感謝 @ihipop 童鞋
關於BOM,簡單的來說,軟體通過BOM來識別這個檔案是否是UTF-8編碼。在Firefox早期的版本裡,擴充是不能有BOM的,不過Firefox 1.5以後的版本已經開始支援BOM了。現在又發現,PHP也不支援BOM。PHP在設計時就沒有考慮BOM的問題,也就是說他不會忽略UTF-8編碼的檔案開頭BOM的那三個字元。

其中有提到另一個麻煩:“受COOKIE送出機制的限制,在這些檔案開頭已經有BOM的檔案中,COOKIE無法送出(因為在COOKIE送出前PHP已經送出了檔案頭),所以登入和登出功能失效。一切依賴COOKIE、SESSION實現的功能全部無效。”這個應該就是Wordpress後台出現空白頁面的原因了,因為任何一個被執行的檔案包含了BOM,這三個字元都將被送出,導致依賴cookies和session的功能失效,所以你也可能遇到如下錯誤:

複製代碼 代碼如下:

Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at E:\web\index.php:1) in E:\web\functions\sessions.php on line 39

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.