2011-05-16 58 views
13

我想從我的服務器上從Apache切換到Nginx。這裏唯一的問題是我在我的PHP腳本中使用的getallheaders()函數,它不適用於Nginx。我已經嘗試了php站點上的getallheaders finction用戶貢獻的注意事項,但不返回所有請求標頭。PHP getallheaders替代

請告訴我如何解決這個問題。我真的很想切換到Nginx。

+0

你錯過了哪些標題?你確定你丟失的頭文件確實是一個請求頭文件,而不是由apache設置的? – 2011-05-16 09:02:14

+0

我缺少由客戶端發送的自定義標題,例如我的應用程序需要ownet-id字段,如果沒有getallheaders就無法訪問它。 – adityap 2011-05-16 11:27:58

+0

它在PHP 5.4 FastCGI上可用。 – CMCDragonkai 2013-10-15 09:07:07

回答

9

,您仍然可以使用它,但你將不得不重新定義/它重新寫喜歡這裏

http://www.php.net/manual/en/function.getallheaders.php#84262

+0

我已經使用這種方法,但沒有運氣。它不會給我所有我想要的標題。例如我的應用需要客戶端發送「owner-id」頭。除getallheaders()之外,這是無法獲得的。 – adityap 2011-05-16 11:29:27

+0

我認爲apache_request_headers()不會工作嗎? – 0xAli 2011-05-16 12:43:02

+0

是的..也不起作用..... – adityap 2011-05-16 13:48:46

5

業主-ID的請求頭將傳遞給PHP作爲$ _ SERVER [」 HTTP_OWNER_ID']由nginx。所有的請求頭都以類似的方式傳遞。

+0

不,它不提供這種方式的標題.... – adityap 2011-05-18 10:10:06

+0

我剛剛測試通過調用一個PHP腳本包含< ?php var_export($ _ SERVER); ?>使用curl -H'Owner-ID:foobar'和$ _SERVER ['HTTP_OWNER_ID']的值爲foobar。您是否可以禁用fastcgi_pass_request_headers關閉此行爲;? – kolbyjack 2011-05-18 13:21:46

+0

我已經卸載nginx ...它可能會提供標題這種方式,但有許多其他問題,如你不能重新編譯服務器無法安裝模塊。這令人討厭在生產服務器上部署。我想現在仍然在Apache上,直到nginx變得足夠成熟。無論如何感謝您的幫助 – adityap 2011-05-19 05:13:38