2010-09-21 46 views
2

直到最近,我的LAMP按照我的預期工作,並且使用PHP的header()來根據文檔重定向。不知從何而來,這改變了。問題可以在這裏看到:PHP header()在輸出後被髮送

<html> 
<head> 
<title> BLAH </title> 
</head> 

<body> 
<p> TEXT </p> 
<?php 
echo "BLAH BLAH BLAH"; 
sleep(10); 
header("Location: http://example.com"); 
?> 
</body> 
</html> 

據我所知,重定向不應該發生 - 但它的確如此。我嘗試迴應,添加HTML,等待避免任何可能的競爭條件,都無濟於事。當我訪問這個頁面時,沒有輸出顯示,10秒鐘後我重定向。

因爲大多數人都有完全相反的問題,所以我在網上搜索並不是很幸運,也沒有在服務器日誌中找到任何有用的東西。我沒有做任何配置更改或軟件包更新。我問的人也感到困惑。

我在CentOS虛擬機上運行PHP 5和Apache 2。

P.S .:我的第一個問題,但閱讀這個網站已經幫了我很多次,我只是喜歡它:)。

+6

看起來像輸出緩衝被啓用。檢查你的php.ini – 2010-09-21 07:58:44

+0

是的,拉烏爾說什麼 – 2010-09-21 07:59:52

+0

嘗試一個'flush()'而不是'sleep(10)'。請注意,Internet Explorer在接收1024個字節後開始渲染。 – bouke 2010-09-21 09:00:48

回答

1

謝謝拉烏爾,就是這樣。

我完全忘記了我在虛擬機之前一直在使用另一個Debian機器。當然,它的默認php.ini與CentOS的不同。 Debian有output_buffering = Off而CentOS設置爲4096. 此外,虛擬機上的PHP錯誤被禁用。

再次感謝,夥計們,知道這不是一個晦澀的語言怪癖或難以捉摸的設計缺陷是非常令人放心的。乾杯。