Cannot modify header information錯(cuò)誤解決方法
更新時(shí)間:2008年10月08日 10:34:10 作者:
Warning: Cannot modify header information - headers already sent by出錯(cuò)的原因
<?php
ob_start();
setcookie("username","宋巖賓",time()+3600);
echo "the username is:".$HTTP_COOKIE_VARS["username"]."\n";
echo "the username is:".$_COOKIE["username"]."\n";
print_r($_COOKIE);
?>
Warning: Cannot modify header information - headers already sent by出錯(cuò)的原因
我在php程序的頭部加了,
header("cache-control:no-cache,must-revalidate");
之后頁(yè)面就出現(xiàn)上面的錯(cuò)誤,看了N個(gè)資料也沒(méi)有結(jié)果。今天偶爾發(fā)現(xiàn)原來(lái)是我的php.ini里面的配置出了問(wèn)題,在C:\windows\下找到php.ini文件
output_buffering默認(rèn)為off的。我現(xiàn)在把它設(shè)為4096就OK了。
用于解決顯示提示錯(cuò)誤,不能按(日期+導(dǎo)出文件數(shù))為文件名的錯(cuò)誤信息.
setcookie函數(shù)必須在任何資料輸出至瀏覽器前,就先送出
基於上面這些限制,所以執(zhí)行setcookie()函數(shù)時(shí),常會(huì)碰到"Undefined index"、"Cannot modify header information - headers already sent by"…等問(wèn)題,解決"Cannot modify header information - headers already sent by"這個(gè)錯(cuò)誤的方法是在產(chǎn)生cookie前,先延緩資料輸出至瀏覽器,因此,您可以在程式的最前方加上ob_start();這個(gè)函數(shù)。
ob_start()函數(shù)用于打開(kāi)緩沖區(qū),比如header()函數(shù)之前如果就有輸出,包括回車(chē)\空格\換行\(zhòng)都會(huì)有"Header had all ready send by"的錯(cuò)誤,這時(shí)可以先用ob_start()打開(kāi)緩沖區(qū)PHP代碼的數(shù)據(jù)塊和echo()輸出都會(huì)進(jìn)入緩沖區(qū)而不會(huì)立刻輸出.當(dāng)然打開(kāi)緩沖區(qū)的作用很多,只要發(fā)揮你的想象.可以總結(jié)以下四點(diǎn):
1.用于header()之前
ob_start(); //打開(kāi)緩沖區(qū)
echo \"Hellon\"; //輸出
header("location:index.php"); //把瀏覽器重定向到index.php
ob_end_flush();//輸出全部?jī)?nèi)容到瀏覽器
?>
2.phpinfo()函數(shù)可獲取客戶(hù)端和服務(wù)器端的信息,但要保存客戶(hù)端信息用緩沖區(qū)的方法是最好的選擇.
ob_start(); //打開(kāi)緩沖區(qū)
phpinfo(); //使用phpinfo函數(shù)
$info=ob_get_contents(); //得到緩沖區(qū)的內(nèi)容并且賦值給$info
$file=fopen(\'info.txt\',\'w\'); //打開(kāi)文件info.txt
fwrite($file,$info); //寫(xiě)入信息到info.txt
fclose($file); //關(guān)閉文件info.txt
?>
3.靜態(tài)頁(yè)面技術(shù)
ob_start();//打開(kāi)緩沖區(qū)
?>
php頁(yè)面的全部輸出
$content = ob_get_contents();//取得php頁(yè)面輸出的全部?jī)?nèi)容
$fp = fopen("output00001.html", "w"); //創(chuàng)建一個(gè)文件,并打開(kāi),準(zhǔn)備寫(xiě)入
fwrite($fp, $content); //把php頁(yè)面的內(nèi)容全部寫(xiě)入output00001.html,然后……
fclose($fp);
?>
4.輸出代碼
Function run_code($code) {
If($code) {
ob_start();
eval($code);
$contents = ob_get_contents();
ob_end_clean();
}else {
echo "錯(cuò)誤!沒(méi)有輸出";
exit();
}
return $contents;
}
ob_start();
setcookie("username","宋巖賓",time()+3600);
echo "the username is:".$HTTP_COOKIE_VARS["username"]."\n";
echo "the username is:".$_COOKIE["username"]."\n";
print_r($_COOKIE);
?>
Warning: Cannot modify header information - headers already sent by出錯(cuò)的原因
我在php程序的頭部加了,
header("cache-control:no-cache,must-revalidate");
之后頁(yè)面就出現(xiàn)上面的錯(cuò)誤,看了N個(gè)資料也沒(méi)有結(jié)果。今天偶爾發(fā)現(xiàn)原來(lái)是我的php.ini里面的配置出了問(wèn)題,在C:\windows\下找到php.ini文件
output_buffering默認(rèn)為off的。我現(xiàn)在把它設(shè)為4096就OK了。
用于解決顯示提示錯(cuò)誤,不能按(日期+導(dǎo)出文件數(shù))為文件名的錯(cuò)誤信息.
setcookie函數(shù)必須在任何資料輸出至瀏覽器前,就先送出
基於上面這些限制,所以執(zhí)行setcookie()函數(shù)時(shí),常會(huì)碰到"Undefined index"、"Cannot modify header information - headers already sent by"…等問(wèn)題,解決"Cannot modify header information - headers already sent by"這個(gè)錯(cuò)誤的方法是在產(chǎn)生cookie前,先延緩資料輸出至瀏覽器,因此,您可以在程式的最前方加上ob_start();這個(gè)函數(shù)。
ob_start()函數(shù)用于打開(kāi)緩沖區(qū),比如header()函數(shù)之前如果就有輸出,包括回車(chē)\空格\換行\(zhòng)都會(huì)有"Header had all ready send by"的錯(cuò)誤,這時(shí)可以先用ob_start()打開(kāi)緩沖區(qū)PHP代碼的數(shù)據(jù)塊和echo()輸出都會(huì)進(jìn)入緩沖區(qū)而不會(huì)立刻輸出.當(dāng)然打開(kāi)緩沖區(qū)的作用很多,只要發(fā)揮你的想象.可以總結(jié)以下四點(diǎn):
1.用于header()之前
ob_start(); //打開(kāi)緩沖區(qū)
echo \"Hellon\"; //輸出
header("location:index.php"); //把瀏覽器重定向到index.php
ob_end_flush();//輸出全部?jī)?nèi)容到瀏覽器
?>
2.phpinfo()函數(shù)可獲取客戶(hù)端和服務(wù)器端的信息,但要保存客戶(hù)端信息用緩沖區(qū)的方法是最好的選擇.
ob_start(); //打開(kāi)緩沖區(qū)
phpinfo(); //使用phpinfo函數(shù)
$info=ob_get_contents(); //得到緩沖區(qū)的內(nèi)容并且賦值給$info
$file=fopen(\'info.txt\',\'w\'); //打開(kāi)文件info.txt
fwrite($file,$info); //寫(xiě)入信息到info.txt
fclose($file); //關(guān)閉文件info.txt
?>
3.靜態(tài)頁(yè)面技術(shù)
ob_start();//打開(kāi)緩沖區(qū)
?>
php頁(yè)面的全部輸出
$content = ob_get_contents();//取得php頁(yè)面輸出的全部?jī)?nèi)容
$fp = fopen("output00001.html", "w"); //創(chuàng)建一個(gè)文件,并打開(kāi),準(zhǔn)備寫(xiě)入
fwrite($fp, $content); //把php頁(yè)面的內(nèi)容全部寫(xiě)入output00001.html,然后……
fclose($fp);
?>
4.輸出代碼
Function run_code($code) {
If($code) {
ob_start();
eval($code);
$contents = ob_get_contents();
ob_end_clean();
}else {
echo "錯(cuò)誤!沒(méi)有輸出";
exit();
}
return $contents;
}
相關(guān)文章
PHP微信企業(yè)號(hào)開(kāi)發(fā)之回調(diào)模式開(kāi)啟與用法示例
這篇文章主要介紹了PHP微信企業(yè)號(hào)開(kāi)發(fā)之回調(diào)模式開(kāi)啟與用法,結(jié)合具體實(shí)例形式分析了php微信企業(yè)號(hào)回調(diào)模式開(kāi)啟與使用方法相關(guān)操作技巧,代碼中備有詳盡的注釋說(shuō)明便于讀者理解,需要的朋友可以參考下2017-11-11PHP中set_include_path()函數(shù)相關(guān)用法分析
這篇文章主要介紹了PHP中set_include_path()函數(shù)相關(guān)用法,結(jié)合實(shí)例形式分析了php針對(duì)文件路徑設(shè)置的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2016-07-07PHP實(shí)現(xiàn)獲取域名的方法小結(jié)
這篇文章主要介紹了PHP實(shí)現(xiàn)獲取域名的方法,實(shí)例總結(jié)了常見(jiàn)的獲取域名的方法,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2014-11-11php中l(wèi)trim()、rtrim()與trim()刪除字符空格實(shí)例
這篇文章主要介紹了php中l(wèi)trim()、rtrim()與trim()刪除字符空格的方法.以實(shí)例形式分別講述了ltrim()、rtrim()與trim()的具體用法,具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2014-11-11