2012-05-30 28 views
0

而在我目前的項目工作,我發現有點好奇心。如果我嘗試重定向url後任何輸出它仍然正常工作。但根據PHP手冊它沒有工作。http header重定向後輸出

error_reporting(-1); 
echo "test"; 
header("Location: http://www.google.com/"); 

將重定向我沒有任何錯誤,以谷歌。那有什麼問題(mybe my apache config?dunno ...)。它也適用於餅乾等

我使用IE9(測試它也與歌劇)和Apache/2.2.21。

認爲亞歷克斯

+3

輸出可能以某種方式被緩衝。 HTTP請求的結構*要求*標題出現在內容之前;關於它沒有兩種方法。嘗試回顯'ini_get('output_buffering')';如果設置爲「On」,則默認啓用輸出緩衝。 –

+0

我根本不使用緩衝。這個測試案例是從一個空白的index.php我只切割了標籤圍繞它 – Alex

+0

我提到的ini選項如何? –

回答

1

由於意志&餡餅的職位,它發現有一個std輸出緩衝區,我不能禁用或偏見。修復這個「問題」我放置了一個

ob_end_clean(); 

聲明在我index.php的第一行。原因是我的原始測試代碼失敗(我期望)。這確實不是很好,但有必要。如果你們任何人都能提供「更好」的解決方案,我會很感激。

關於亞歷克斯

-1

由於PHP INI設置輸出之前,您的數據得到緩衝。 Thts爲什麼它得到成功重定向到下一個頁面

+0

這不是問題。他在問,爲什麼它成功重定向,儘管事先已經發送了內容。 –

+1

http://php.net/manual/de/function.error-reporting.php -1 = E_ALL – Alex

0

建立關威爾和Ganesh的評論,你也可以嘗試ob_get_status()看到,如果你有在echo通話時打開的任何輸出緩衝器。如果你這樣做,那麼你的echo將被轉儲到緩衝區,並不會立即發送到客戶端。然後header()仍然可以被調用,沒有錯誤,因爲沒有內容被髮送。