2011-03-04 82 views
1

爲什麼這不是拋出一個錯誤:爲什麼echo後的這個頭不會產生錯誤?

echo "texto em cirílico sem conversão"; 
echo "русская слова"; 
header('Content-type: text/html; charset=utf-8'); 

沒關係的實際文本,但我沒有echo一些文字,然後發送一個新的標題,這顯然是另一頭?

我在這裏錯過了什麼?

PS。當我嘗試發送header(location....類型的東西時,彈出的一般錯誤是基於我的想法,但之前出現了一些錯誤,編譯器尖叫了已經發送的頭文件。

+0

你的描述的順序和你的代碼 – 2011-03-04 20:35:03

+0

耶現在他們 – 2011-03-04 20:36:10

+1

是否使用output_buffering不同步? – Cybrix 2011-03-04 20:36:14

回答

4

我想你已經啓用輸出緩衝?檢查你的php.ini爲output_buffering。如果打開此功能,所有打印的文本在發送到STDOUT之前將首先緩存在輸出緩衝區中。

+0

'output_buffering = 4096' - XAMPP的默認設置似乎爲 – 2011-03-04 20:46:30

1

嘗試添加後echoflush(); S和看它是否有差別。

+0

它實際上是。如果我在'echo'後添加'flush();'發出錯誤。這是什麼意思? – 2011-03-04 20:48:44

+1

@Felipe:這意味着PHP在內部緩衝你的輸出,而不是立即發送出去。所以現在你知道它爲什麼沒有抱怨。 :) – Jon 2011-03-04 20:50:16

+0

我希望我能舉出2個答案作爲正確的,但tobyS是第一個 – 2011-03-04 20:53:11

0

header顯示一個警告(這可能會被禁用),而不是錯誤,如果已經發送了頭?在致電header進行測試之前,我會添加if (headers_sent()) {die('headers_sent);'}

0

您要發送輸出你叫頭之前。解決此問題的方法是修復output_buffering值或實施ob_start();和ob_end_flush();.

我希望這有助於! :)

相關問題