2011-09-06 68 views
-1

可能重複:
Headers already sent by PHP警告:不能更改頭信息

2小時後尋找答案我仍然沒有固定的這個問題。

我得到警告:不能更改頭信息 - 頭已經發出(輸出在/home/xxx/public_html/xxx1.php:6開始)在/home/xxx/public_html/xxx2.php第10行

到目前爲止我做了什麼?

- 在xxx1和xxx2中查找沒有空格。我只是改變了網站主辦,現在問題出現了。它說它是在第6行的文件xxx1。請任何一個可以解決這個問題嗎?這是代碼。

<?php 

require_once(__ROOT__.'/config.php'); 

?><head> 
<script src="scripts/func.js" type="text/javascript"></script> 
<link rel="stylesheet" type="text/css" href="css/yui.css"> 
<script src="scripts/yahoo-dom-event.js"></script> 
<script src="scripts/element-min.js"></script> 
<script src="scripts/container_core-min.js"></script> 
<script src="scripts/editor-min.js"></script> 
<script src="scripts/func.js" type="text/javascript"></script> 
</head> 
<? 
+0

第6行腳本「xxx1」中的內容是什麼? – DaveRandom

+0

嘗試在所有文件中使用短標籤:。 – AVProgrammer

+0

它說錯誤發生在xxx2.php在第10行。輸出在xxx1.php在第6行開始。所以你告訴我們輸出確實開始了,這對我們沒有幫助。 – animuson

回答

2

BOM - 字節順序標記:

確保該文件並沒有的config.php BOM進行編碼。記事本++中的 :轉到編碼 - >沒有BOM的UTF8。

+0

非常感謝你! – pikk

1

也許在config.php後更接近標籤?>空格出現或空行 - 對於php5 < 5.3這是一個問題。也許這樣

<?php 
//code here 
?> 
//this may be a space 
// or one more new line 

這就是爲什麼Zend的代碼風格指南建議不關閉PHP的標籤 示例文件xxx.php

<?php 
//not closer tag in end of file 

在這你可以使用ob_clean() - 這幫助您清理緩存和隱瞞錯誤 - 嘗試把它放在任何一行中。

2

您之前的主機配置了輸出緩衝,您的新主機沒有配置。這是你解決問題的原因。

假設上面的代碼是xxx1,在第6行開始輸出數據,因爲這是<?php ?>標籤之外的東西,它被視爲直接發送到瀏覽器的數據。然後,在後面的腳本xxx2的第10行中,有一個對header(),setcookie()或其他試圖修改響應頭的其他函數的調用。

在開始發送正文後,您無法修改響應標頭,因爲標頭已經發送。

你將不得不要麼:

  • 商店從上面的字符串中的HTML,並把它輸出的xxx2
  • 線10之後移動調用試圖更改標題的功能在第6行xxx1

沒有看到更多的代碼我/我們不能確切地告訴你如何做到這一點。

+0

嗯,好吧,我想我明白了,在xx2行10看起來像這樣: $ hResult = mysql_query(「SELECT id,namn,access FROM r_users WHERE sessid ='$ sGUID'and namn ='$ sNICK'」)或死亡(mysql_error()); – inpbox

+0

然後你可能正在做一些導致致命錯誤的事情,然後嘗試將HTTP響應代碼更改爲'500',這需要修改頭文件。你有沒有得到任何其他輸出,或只是錯誤消息? – DaveRandom

相關問題