2013-03-12 44 views
1

這是對one I asked a few days ago的後續問題,最終設法解決我自己。雖然我很高興找到潛在的問題,但這個問題僅表現在一個(三個)環境中的事實看起來很奇怪。託管環境之間的HTTP重定向行爲不一致

該問題與CakePHP 2.3.0站點上在控制器中重定向的操作($this->redirect(...);)有關。基本上,重定向在我的本地(Mac OS X/10.6.8,Apache/2.2.17,PHP/5.3.4)開發機器以及我的同事(Windows 7,Apache/2.4.2, PHP/5.4.3)。 「添加」操作插入記錄到數據庫中,然後重定向到「索引」操作。用戶登錄工作正常。沒有問題,一切都看起來正確。但是,在我們的臨時服務器(Debian GNU/Linux 6.0.6內核3.2.6,Apache/2.2.22,PHP/5.3.15)上,試圖重定向的任何控制器操作導致HTTP 200空白頁面(而不是預期的HTTP 302重定向)。

該頁面並非真正的空白,而是我最終發現的一個換行符在我的控制器之一中打開PHP標籤之前錯誤地添加了。據我所知,換行本質上觸發了頭部輸出的結束,因此無法寫入Location: ...頭部。

一旦發現錯誤的換行符,這是一個快速修復,但我想知道爲什麼我在我的Mac或我的同事的Windows機器上看不到相同的空白頁面行爲。我不確定這是PHP還是Apache版本之間的怪癖,或者真的。我對任何人的理論都感興趣,爲什麼事情會按照他們的方式行事。

+0

如何在機器之間移動文件? – Raffaele 2013-03-12 17:26:12

+0

我們有一個顛覆回購 – theraccoonbear 2013-03-12 18:08:51

回答

3

根據回答這個堆棧溢出的問題:「How to fix "Headers already sent" error in PHP」:

但它的工作在其他服務器上!?

如果您以前沒有收到標題警告,那麼php.ini設置 已更改。然後在其他 服務器上啓用輸出緩衝,但不在當前。請參閱前一節。

+0

所有服務器的錯誤報告,我沒有得到任何錯誤消息。我瞭解「頭已發送」位,但爲什麼重定向在任何地方工作?他們不應該都在空白頁上失敗了嗎?對不起,如果我在你的答案中遺漏了某些東西 – theraccoonbear 2013-03-12 18:12:21

+0

對不起,剛剛重讀了關於輸出緩衝的部分,實際上是配置的區別。感謝你的回答! – theraccoonbear 2013-03-12 18:17:44

+0

Np - 很高興幫助! – Dave 2013-03-12 21:18:18