可能重複:
「Warning: Headers already sent」 in PHP如何在頁面完成呈現之前發送標題?
在測試過程中我遇到的問題 「已經發送了頭」。但後來我想,這怎麼會發生?其中一個標題是Content-Length,它在整個PHP腳本完成之前是未知的,它是如何解決這個問題的?
可能重複:
「Warning: Headers already sent」 in PHP如何在頁面完成呈現之前發送標題?
在測試過程中我遇到的問題 「已經發送了頭」。但後來我想,這怎麼會發生?其中一個標題是Content-Length,它在整個PHP腳本完成之前是未知的,它是如何解決這個問題的?
你應該使用輸出緩衝:達到你的腳本
有一兩件事你可以嘗試結束時
ob_start();
// write all your code here
header('Content-Length: ' . ob_get_length());
輸出緩衝被刷新含蓄,我不知道,是請致電header()
,並查看PHP是否自動爲您設置Content-Length
。
參見:ob_start()
編輯
如果你談論的是PHP是怎麼做的,它並不總是寫頭;一旦輸出緩衝區已滿,它將刷新它而不設置明確的長度標題。
看看這些函數:http://php.net/manual/en/ref.outcontrol.php – Andrew
謝謝你,你唯一真正閱讀和回答我的問題的人。 –
當您在使用header()
設置標頭之前輸出任何東西時,您會收到此消息。所以,確保你沒有迴應任何東西,沒有HTML,沒有空白......在設置標題之前什麼都沒有。
你要發送頭你發送任何別的output.Once腳本之前產生的任何東西 - 無論是頁面的靜態部分或者動態生成的輸出 - PHP發送頭其次是無論發送到輸出(unles你使用緩衝,在其他答案中提到)。
因此,您必須從<?php
開始您的文件,並確保它不包含某些編輯人員希望在文件內容正確之前放置的BOM字符。
http://stackoverflow.com/questions/8028957/warning-headers-already-sent-in-php –
使用搜索功能... – Chris
@MattLo不是重複的; OP瞭解爲什麼會顯示警告,但想知道如何先解析寫入內容,然後發送「Content-Length」標頭。投票重新開放。 –