如果頁面出現Warning: Cannot modify header information ? headers already sent by這問題,一般是頁面頭你在session之前有輸出了,下面一起來看看wordpress頁面出現此問題解決辦法.
最近無意間查看網站時,瀏覽了一下分類頁,正常顯示,也就是這個分類文章列表的第一頁,然后點到下一頁,正常顯示,但是再點擊第一頁時,就出現在錯誤提示:
Warning:Cannot modify header information – headers already sent by (output started at /home/hotzutic/domains/Vevb.com/public_html/wp-config.php:1) in/home/hotzutic/domains/Vevb.com/public_html/wp-includes/pluggable.php on line 1121
按照上面的代碼提示,還以為是wordpress程序下的wp-includes/pluggable.php 文件有問題,于是我重新上傳了一下相關文件,但是隨后,問題依舊,這是怎么回事呢?
于是,在網上查了下,看有沒有碰到與我一樣的問題,呵呵,還真有類似情況的發生,他們說是代碼utf-8帶bom的問題,讓wp-config.php文件的第一行有空行,才導致這樣的錯誤提示,我仔細看了一下代碼,可能還真是,因為錯誤代碼中也提到了這個文件的第一行:public_html/wp-config.php:1
于是我果斷地通過 EditPlus 編輯器把wp-config.php文件代碼轉換成無bom格式的,再查看網站,正常了.
補充:
看了一些網上的方法也沒解決,最后在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函數,才會把數據發送給客戶端瀏覽器.
下面我們來看看解決方案:
1. 把錯誤警告全不顯示,治標不治本的方法
error_reporting(E_ERROR | E_PARSE);這里不要顯示E_WARNING即可.
2. 編輯php.ini
打開php.ini文件,找到output_buffering = 改為on或者任何數字.
3. 如果沒有權限編輯php.ini,如使用虛擬主機的
在你的空間根目錄下建立一個.htaccess文件,內容如下:
AllowOverride AllPHP_FLAG output_buffering On
如果還是不行,那么,再用下面的方法:
在PHP文件的最開始加入:ini_set(”output_buffering”, “1〃);
讓這個頁面打開PHP的輸出緩存.
4. 在PHP文件里解決
ob_start()
啟用output buffering機制,Output buffering支持多層次 — 例如,可以多次調用 ob_start() 函數。
ob_end_flush()
發送output buffer(輸出緩沖)并禁用output buffering機制。
ob_end_clean()
清除output buffer但不發送,并禁用output buffering。
ob_get_contents()
將當前的output buffer返回成一個字符串,允許你處理腳本發出的任何輸出.
原理:output_buffering被啟用時,在腳本發送輸出時,PHP并不發送HTTP header,相反,它將此輸出通過管道(pipe)輸入到動態增加的緩存中,只能在PHP 4.0中使用,它具有中央化的輸出機制,你仍然可以修改/添加header,或者設置cookie,因為header實際上并沒有發送,當全部腳本終止時,PHP將自動發送HTTP header到瀏覽器,然后再發送輸出緩沖中的內容.
5. 如果以上方法都不能等到滿意的解決辦法,請用如下辦法:
用notepad++等編輯器將該文件轉為UTF-8 without BOM編碼的文件,再試試.
新聞熱點
疑難解答
圖片精選