php Cannot modify header informationheaders already sent by解決方案

來源:互聯網
上載者:User

如果在執行php程式時看到這條警告:"Warning: Cannot modify header information - headers already sent by ...."

Few notes based on the following user posts:
有以下幾種解決方案:

1. Blank lines (空白行):
Make sure no blank line after <?php ... ?> of the calling php scrīpt.
檢查有<?php ... ?> 後面沒有空白行,特別是include或者require的檔案。不少問題是這些空白行導致的。

2. Use exit statement (用exit來解決):
Use exit after header statement seems to help some people
在header後加上exit();
header ("Location: xxx");
exit();

3a. Use Javascrīpt (用Javascrīpt來解決):
<? echo "<scrīpt> self.location( file.php );</scrīpt>"; ?>
Since it s a scrīpt, it won t modify the header until execution of Javascrīpt.
可以用Javascrīpt來代替header。另外需要注意,採用這種方法需要瀏覽器支援Javascrīpt.

3b. Use output buffering (用輸出緩衝來解決):
<?php ob_start(); ?>
... HTML codes ...
<?php
... PHP codes ...
header ("Location: ....");
ob_end_flush();
?>

另一篇文章

<?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");

之後頁面就出現上面的錯誤,看了N個資料也沒有結果。今天偶爾發現原來是我的php.ini裡面的配置出了問題,在C:windows下找到php.ini檔案
output_buffering預設為off的。

小提示,還有一個更好的解決辦法就是在php.ini 然後把 output_buffering 設為 on [...]就不會出現這類問題了。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.