2010-07-13 78 views
0

可能重複:
「Warning: Headers already sent」 in PHP不能更改頭信息,頭已經發出已

我試着用XAMPP精簡版在我的閃存驅動器的便攜式這樣我就可以把服務器的任何地方。 但是當我使用xampp時,我總是會遇到錯誤。這個錯誤特別是:

Warning: Cannot modify header information - headers already sent by (output started at /path/to/geeklog/public_html/blabla.php:581) in /path/to/geeklog/public_html/system/lib-blablab.php on line 180 

我不知道爲什麼我得到這個錯誤。但是當我使用wampserver時。真的沒有問題。我沒有得到任何錯誤。當我使用xampp時,我需要做些什麼來解決這個問題。 是否有便攜式版本的wap

+1

修改標題和標籤,因爲它與XAMPP無關,嚴格來說是一個PHP問題。 – animuson 2010-07-13 05:18:34

回答

3

爲了確保您的錯誤報告級別是一樣的不同環境中,你可以使用error_reporting()ini_set('display_errors', 1)

還要檢查你的PHP文件的開始標記之前和結束標記後的任何空白在您的應用程序設置。

除了上述各點,確保所設置的標頭之前不輸出任何東西,例如下面的代碼將產生類似於您收到的錯誤:

echo 'Hello, World'; 
header('Location: http://www.somesite.com'); 
3

是否有可能在blabla.php第581行的PHP標籤之外有一點點空白?我敢打賭有。

查看,如果您有任何東西以外的PHP標記,即發送到瀏覽器。一旦有東西被髮送到瀏覽器,你就不能再發送頭文件了(比如sessionID cookies!)。

這個問題可能不是XAMPP,而是您將PHP代碼放在閃存驅動器上。

1

你在環境中看到的差異幾乎肯定是配置上的差異。

一兩件事情正在發生未警告冒落的服務器上:

1)Output buffering默認是開啓的

2)error_reporting和/或被設置成你只是不看到警告。但是,如果是這樣的話,你的頭仍不會被置,因此它可能是#1

您可以通過查看從phpinfo()

輸出緩衝,使當輸出檢查這些設置,緩衝的任何輸出(常規內容不在標籤內,任何回顯或打印()等)在服務器上,然後一次性發送到客戶端。

我會在你的便攜版本中尋找,找到php.ini,並嘗試打開輸出緩衝。或者,您可以通過在腳本頂部附近附加ob_start()來在運行時啓用輸出緩衝。

0

誤差狀態:output started at /path/to/geeklog/public_html/blabla.php:581,所以我會從那裏開始。您需要在輸出任何內容之前發送所有標題,這包括其他人在此提到的空格。

相關問題