Cannot modify header information的解決方法

很多人在架設WordPress時,常常換用新佈景或是一開始安裝時常常會碰到一個錯誤訊息「Cannot modify header information – headers already sent by」,通常遇到問題別擔心,Google一下會有很多答案的,這問題其實發生再轉向時,緩衝區出了些問題,只要開啟一下系統設定調整一下,就可以解決這個問題了。


其實這篇的解決方法很久以前就想寫了,不過一直存在草稿區,剛剛看了一下已經截取好的圖,上面網址還是舊網址的浮水印呢!不過有修正成新的就是了XD。最近在寫畢業專題的網頁系統時,也是遇到了「Cannot modify header information」的問題,當然之前也有遇過這問題。通常會出現在網頁轉向時,採用「header」函式,才造成這個緩衝區的錯誤訊息。

Cannot modify header information的解決方法

這個問題全句警告訊息是:

Warning: Cannot modify header information – headers already sent by

其實解決方法很簡單,只要調整一下php.ini內的設定值就可以正常了,換句話說,就是系統本身有個設定值預設是未開啟,只要我們將他開啟就可以了。所以找到系統設定檔「php.ini」,建議使用「Notepad++」開啟,找到「output_buffering」並將他後面的值設定為「On」(啟動),當然也可以設定成「4096」或更高的數值(設定緩衝區大小),然後儲存並重新啟動Apache就可以了。

Cannot modify header information的解決方法

如果你是使用虛擬主機而遇到這樣的問題,建議可以先詢問主機商是否可以啟動這項函數?或者是說看可否透過.htaccess來調整這項設定數值(有些虛擬主機可以這樣調整)。另外,官方有另外一種是透過PHP函式「ob_start()」來解決,就是加在出問題的檔案語法前面,在結束的地方加上「ob_end_flush()」就可以了。您可以參考「剖析PHP中的輸出緩衝」這篇文章,裡面算講的蠻詳細的。