2012-10-20 23 views
2

爲什麼PHP響應代碼(或HTTP響應頭的第一行)在PHP $_SERVER變量數組中不可用?

這是服務器技術的工作方式的限制嗎? PHP的限制?使用HTTP協議?或者,也許我會完全堅持需要HTTP響應代碼? ;)

就我而言,我正在與Apache2合作。

只是好奇。

EDIT 1:我詢問的服務器響應之前使用由Apache's LogFormat directive%>sthe status of the LAST request)等效被髮送。

編輯2:的答案非常清楚了,但接下來的問題是,爲什麼我不能讓我的服務器的內部工作響應代碼?如果我設置了ErrorDocument 403 /index.php,我可以通過$_SERVER['REDIRECT_STATUS']訪問響應代碼。沒有更簡單的方法嗎?我猜不是。不過,我仍然從你的答案中學到了很多東西。這說得通。

還有apache_response_headers(),但仍然不愛工作響應代碼/第一行。

+3

您正在構建響應;您的服務器發送的代碼*返回*是響應代碼。你在服務器上需要什麼?流? –

+0

告訴我,什麼時候你想得到響應碼?響應發送之前或之後? – raina77ow

+1

http://www.php.net/manual/en/reserved.variables.httpresponseheader.php –

回答

9

因爲HTTP響應是發送給客戶端的東西,您可以使用header函數在PHP中對其進行更改。這不是在你的PHP中是自動的,並且在將它傳遞給PHP之前將由服務器(即apache)處理。

0

如果你不與頭功能設置,狀態代碼將永遠是200成功響應和致命錯誤的情況下,PHP可以將其更改爲500(內部服務器錯誤)。

幾乎所有其他狀態都由網絡服務器處理,而無需將您的請求傳遞給您的腳本。

+0

你知道是否有時會處理400由Apache沒有傳遞給PHP? – Gaia

相關問題