Cannot modify header information錯誤解決方法
更新時間:2008年10月08日 10:34:10 作者:
Warning: Cannot modify header information - headers already sent by出錯的原因
<?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出錯的原因
我在php程序的頭部加了,
header("cache-control:no-cache,must-revalidate");
之后頁面就出現(xiàn)上面的錯誤,看了N個資料也沒有結(jié)果。今天偶爾發(fā)現(xiàn)原來是我的php.ini里面的配置出了問題,在C:\windows\下找到php.ini文件
output_buffering默認為off的。我現(xiàn)在把它設(shè)為4096就OK了。
用于解決顯示提示錯誤,不能按(日期+導(dǎo)出文件數(shù))為文件名的錯誤信息.
setcookie函數(shù)必須在任何資料輸出至瀏覽器前,就先送出
基於上面這些限制,所以執(zhí)行setcookie()函數(shù)時,常會碰到"Undefined index"、"Cannot modify header information - headers already sent by"…等問題,解決"Cannot modify header information - headers already sent by"這個錯誤的方法是在產(chǎn)生cookie前,先延緩資料輸出至瀏覽器,因此,您可以在程式的最前方加上ob_start();這個函數(shù)。
ob_start()函數(shù)用于打開緩沖區(qū),比如header()函數(shù)之前如果就有輸出,包括回車\空格\換行\(zhòng)都會有"Header had all ready send by"的錯誤,這時可以先用ob_start()打開緩沖區(qū)PHP代碼的數(shù)據(jù)塊和echo()輸出都會進入緩沖區(qū)而不會立刻輸出.當(dāng)然打開緩沖區(qū)的作用很多,只要發(fā)揮你的想象.可以總結(jié)以下四點:
1.用于header()之前
ob_start(); //打開緩沖區(qū)
echo \"Hellon\"; //輸出
header("location:index.php"); //把瀏覽器重定向到index.php
ob_end_flush();//輸出全部內(nèi)容到瀏覽器
?>
2.phpinfo()函數(shù)可獲取客戶端和服務(wù)器端的信息,但要保存客戶端信息用緩沖區(qū)的方法是最好的選擇.
ob_start(); //打開緩沖區(qū)
phpinfo(); //使用phpinfo函數(shù)
$info=ob_get_contents(); //得到緩沖區(qū)的內(nèi)容并且賦值給$info
$file=fopen(\'info.txt\',\'w\'); //打開文件info.txt
fwrite($file,$info); //寫入信息到info.txt
fclose($file); //關(guān)閉文件info.txt
?>
3.靜態(tài)頁面技術(shù)
ob_start();//打開緩沖區(qū)
?>
php頁面的全部輸出
$content = ob_get_contents();//取得php頁面輸出的全部內(nèi)容
$fp = fopen("output00001.html", "w"); //創(chuàng)建一個文件,并打開,準備寫入
fwrite($fp, $content); //把php頁面的內(nèi)容全部寫入output00001.html,然后……
fclose($fp);
?>
4.輸出代碼
Function run_code($code) {
If($code) {
ob_start();
eval($code);
$contents = ob_get_contents();
ob_end_clean();
}else {
echo "錯誤!沒有輸出";
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出錯的原因
我在php程序的頭部加了,
header("cache-control:no-cache,must-revalidate");
之后頁面就出現(xiàn)上面的錯誤,看了N個資料也沒有結(jié)果。今天偶爾發(fā)現(xiàn)原來是我的php.ini里面的配置出了問題,在C:\windows\下找到php.ini文件
output_buffering默認為off的。我現(xiàn)在把它設(shè)為4096就OK了。
用于解決顯示提示錯誤,不能按(日期+導(dǎo)出文件數(shù))為文件名的錯誤信息.
setcookie函數(shù)必須在任何資料輸出至瀏覽器前,就先送出
基於上面這些限制,所以執(zhí)行setcookie()函數(shù)時,常會碰到"Undefined index"、"Cannot modify header information - headers already sent by"…等問題,解決"Cannot modify header information - headers already sent by"這個錯誤的方法是在產(chǎn)生cookie前,先延緩資料輸出至瀏覽器,因此,您可以在程式的最前方加上ob_start();這個函數(shù)。
ob_start()函數(shù)用于打開緩沖區(qū),比如header()函數(shù)之前如果就有輸出,包括回車\空格\換行\(zhòng)都會有"Header had all ready send by"的錯誤,這時可以先用ob_start()打開緩沖區(qū)PHP代碼的數(shù)據(jù)塊和echo()輸出都會進入緩沖區(qū)而不會立刻輸出.當(dāng)然打開緩沖區(qū)的作用很多,只要發(fā)揮你的想象.可以總結(jié)以下四點:
1.用于header()之前
ob_start(); //打開緩沖區(qū)
echo \"Hellon\"; //輸出
header("location:index.php"); //把瀏覽器重定向到index.php
ob_end_flush();//輸出全部內(nèi)容到瀏覽器
?>
2.phpinfo()函數(shù)可獲取客戶端和服務(wù)器端的信息,但要保存客戶端信息用緩沖區(qū)的方法是最好的選擇.
ob_start(); //打開緩沖區(qū)
phpinfo(); //使用phpinfo函數(shù)
$info=ob_get_contents(); //得到緩沖區(qū)的內(nèi)容并且賦值給$info
$file=fopen(\'info.txt\',\'w\'); //打開文件info.txt
fwrite($file,$info); //寫入信息到info.txt
fclose($file); //關(guān)閉文件info.txt
?>
3.靜態(tài)頁面技術(shù)
ob_start();//打開緩沖區(qū)
?>
php頁面的全部輸出
$content = ob_get_contents();//取得php頁面輸出的全部內(nèi)容
$fp = fopen("output00001.html", "w"); //創(chuàng)建一個文件,并打開,準備寫入
fwrite($fp, $content); //把php頁面的內(nèi)容全部寫入output00001.html,然后……
fclose($fp);
?>
4.輸出代碼
Function run_code($code) {
If($code) {
ob_start();
eval($code);
$contents = ob_get_contents();
ob_end_clean();
}else {
echo "錯誤!沒有輸出";
exit();
}
return $contents;
}
相關(guān)文章
PHP實現(xiàn)支持SSL連接的SMTP郵件發(fā)送類
這篇文章主要介紹了PHP實現(xiàn)支持SSL連接的SMTP郵件發(fā)送類,實例分析了php實現(xiàn)smtp郵件發(fā)送類的原理與技巧,以及支持SSL連接的方法,需要的朋友可以參考下2015-03-03
PHP入門教程之?dāng)?shù)組用法匯總(創(chuàng)建,刪除,遍歷,排序等)
這篇文章主要介紹了PHP入門教程之?dāng)?shù)組用法,結(jié)合大量實例總結(jié)分析了php關(guān)于數(shù)組的創(chuàng)建、打印、遍歷、獲取、排序、插入、刪除等常見操作技巧,需要的朋友可以參考下2016-09-09
PHP頁面靜態(tài)化——純靜態(tài)與偽靜態(tài)用法詳解
這篇文章主要介紹了PHP頁面靜態(tài)化——純靜態(tài)與偽靜態(tài)用法,結(jié)合實例形式分析了PHP頁面靜態(tài)化——純靜態(tài)與偽靜態(tài)相關(guān)原理、實現(xiàn)方法與相關(guān)操作注意事項,需要的朋友可以參考下2020-06-06
ThinkPHP6使用最新版本Endroid/QrCode生成二維碼的方法實例
這篇文章主要介紹了ThinkPHP6使用最新版本Endroid/QrCode生成二維碼的方法,結(jié)合實例形式詳細分析了ThinkPHP6使用最新版本Endroid/QrCode生成二維碼具體步驟、原理、實現(xiàn)方法與相關(guān)注意事項,需要的朋友可以參考下2023-07-07

