2011-05-16 9 views
13

내 서버의 apache에서 nginx로 전환하려고합니다. 유일한 문제는 Nginx에서 작동하지 않는 PHP 스크립트에서 사용한 getallheaders() 함수입니다. getallheaders finction에 대한 PHP 사이트에서 사용자가 작성한 메모를 시도했지만 모든 요청 헤더를 반환하지는 않습니다.PHP getallheaders 대체

이 문제를 해결하는 방법을 알려주십시오. 나는 정말로 Nginx로 전환하고 싶다.

+0

누락 된 헤더는 무엇입니까? 누락 된 헤더가 정말로 아파치가 설정 한 헤더가 아니라 요청 헤더인가? –

+0

클라이언트가 보낸 맞춤 헤더가 누락되었습니다. 예를 들어 내 앱에는 getallheaders 없이는 액세스 할 수없는 ownet-id 필드가 필요합니다. – adityap

+0

PHP 5.4 FastCGI에서 사용할 수 있습니다. – CMCDragonkai

답변

9

당신은 여전히 ​​사용할 수 있지만 다시 정의 /로 $ _SERVER [ '을 PHP로 여기 소유자-ID의 요청 헤더가 전달됩니다

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

+0

이 방법을 사용했지만 행운은 없습니다. 그것은 내가 원하는 모든 헤더를 제공하지 않습니다. 예를 들어 내 응용 프로그램에서는 클라이언트가 "owner-id"헤더를 보내야합니다. 이것은 getallheaders()를 제외한 다른 함수로는 얻을 수 없습니다. – adityap

+0

apache_request_headers()가 작동하지 않는다고 가정합니까? – 0xAli

+0

예 .. 또한 작동하지 않습니다 ..... – adityap

5

처럼 재 작성해야합니다 HTTP_OWNER_ID '] nginx에 의해. 모든 요청 헤더는 비슷한 방식으로 전달됩니다.

+0

아니요 그런 식으로 헤더를 제공하지 않습니다 .... – adityap

+0

나는 방금 < ? php var_export ($ _ SERVER); ?> curl -H 'Owner-ID : foobar'를 사용하고 $ _SERVER [ 'HTTP_OWNER_ID']의 값은 foobar입니다. fastcgi_pass_request_headers off로이 동작을 비활성화 했습니까? – kolbyjack

+0

nginx를 제거했습니다.이 방법으로 헤더를 제공 할 수도 있지만 서버를 다시 컴파일하지 않고 모듈을 설치할 수없는 것과 같은 다른 많은 문제가 있습니다. 프로덕션 서버에 배포하는 것은 귀찮습니다. nginx가 충분히 성숙해질 때까지 아파치에 남아 있습니다. 어쨌든 도움을 주셔서 감사합니다 – adityap