Apache-2.2

一頁顯示 3 個請求(也列印標題)

  • May 13, 2013

幾年前我工作室裡有人設計了一個網頁,現在客戶決定更換伺服器(他搬到了執行 Gen2 SMP,64 位,PHP 版本 5.3.8,標準 MYSQL 版本 5 的 Linux Apache 伺服器)。它突然開始做一些奇怪的事情。

點擊需要登錄的連結時,該頁面使用header()PHP 中的函式將您重定向到登錄頁面。奇怪的是,頁面顯示如下:

好的

伺服器遇到內部錯誤或配置錯誤,無法完成您的請求。請聯繫伺服器管理員,

$$ no address given $$並告知他們錯誤發生的時間,以及您可能所做的任何可能導致錯誤的事情。伺服器錯誤日誌中可能提供有關此錯誤的更多資訊。HTTP/1.1 200 OK 日期:2012 年 10 月 15 日星期一 17:27:32 GMT 伺服器:Apache/2.2.22 (Unix) FrontPage/5.0.2.2635 X-Powered-By:PHP/5.3.8 到期時間:11 月 19 日星期四1981 08:52:00 GMT 記憶體控制:無儲存,無記憶體,必須重新驗證,後檢查 = 0,預檢查 = 0 編譯指示:無記憶體保活:超時 = 5,最大值 = 399連接:保持活動傳輸編碼:分塊內容類型:文本/html 232c

然後是頁面本身,然後是另一個標題:

0 1f4

好的

伺服器遇到內部錯誤或配置錯誤,無法完成您的請求。請聯繫伺服器管理員,

$$ no address given $$並告知他們錯誤發生的時間,以及您可能所做的任何可能導致錯誤的事情。伺服器錯誤日誌中可能提供有關此錯誤的更多資訊。0

最有趣的是,如果您刷新頁面或在 url 上按輸入,它會正確載入。我一直在檢查日誌,它只歸咎於一個不存在的網站圖示。我還檢查了 .htaccess,一切都是正確的(RewriteBase 是 / 如預期的那樣,唯一的東西是另一個規則將 ^en/請求移動到請求?lang=en。有人遇到過這樣的事情嗎?

編輯:IE 不會觸發這兩個標題。這越來越奇怪了。

解決方案!:正如@a​​daptr 指出的那樣,這是 PHP 的問題,而不是任何與伺服器相關的事情。上一位編碼員(我知道責怪前任很不禮貌,但是這種情況花了我太多時間)是這樣做的:

/* config.php -> included everywhere as a bootstrap*/
// ... constant/mysql setup

if($notLogged)
{
   $forward = ...;//previous url
   header("Location: ".WWW.LANG."/customer-area/login/index.php?forward=".$forward);
   exit;
}

在深入研究之後,有些事情讓我感到扭曲:exit;會正確發送標題,還是不會?當然,刪除它exit;會繼續執行頁面(我知道它根本不正確,這就是我之前沒有嘗試過的原因)。但是,如果沒有完全發送標頭,則可能會導致任何類型的問題(我不是伺服器人員,對此我不確定,對不起,伙計們)。刪除該exit;呼叫後,頁面已正確形成,標題“關閉”(因為輸出開始)並且所有齒輪再次開始移動。謝謝大家,伙計們,最好的賞金100分=)

如果 apache 日誌沒有顯示任何錯誤,則意味著 PHP 處理了所有這些 - 並且還向客戶端返回了奇怪的響應。

啟用正確的 PHP 日誌記錄並調查它在做什麼。

響應中的這一位是指示性的:

傳輸編碼:分塊

這意味著 PHP 正在 (text/html) 流中發送響應,該流在標頭中沒有定義 Content-Size

這可能會導致任何標題輸出(PHP 經常記憶體的東西,即它是亂序生成的),即使有一點點滑落,也會導致客戶端認為正在發送一個新頁面。

這只是一個可能的原因;正確的 PHP 日誌會告訴你更多。

引用自:https://serverfault.com/questions/438599