2013-03-13 1 views
4

사용자 정의 헤더가 있는데, $_SERVER에 표시되지 않지만 도움이 표시된 것은 apache_request_headers()입니다.

그런 문제는 하나의 Windows 기반 Apache 버전 (OpenServer)에서만 존재합니다. Mac과 Linux에서 Apache는 모든 헤더를 PHP로 전달하고, $_SERVER 변수에서 볼 수 있습니다 ... 아마도 윈도우에 대한 제한 사항이 있습니까? 또는 모든 헤더를 mod_php에 전달할 수있는 apache.conf의 설정이 있습니까?

PHP 문서에서
+0

PHP는 cgi 또는 apache 모듈로 실행 중입니까? – Ghigo

+0

@Ghigo를 모듈로 사용하면 – user1016265

답변

0

: 코멘트에 http://php.net/manual/en/reserved.variables.server.php

, 그 통지 : Windows에서

7 당신이 $ _SERVER를 사용해야합니다 IIS [ 'LOCAL_ADDR'] 대신 $ _SERVER보다 [ 'SERVER_ADDR는'] 얻을 수 서버의 IP 주소

일부 변수 이름은 창과 다를 수 있으므로 찾으셔야합니다. 문서 주석을 면밀히 살펴보면 몇 가지 해결 방법이 있습니다.

+0

헤더가 전혀없는 경우에도 도움이되지 않습니다. – eis

4

PHP가 Windows에서 Apache 모듈로 실행되는 경우 $ _SERVER 자동 전역 배열에 모든 헤더가 표시되지 않습니다.

apache_request_headers()를 사용하여 검색해야합니다. 당신은 크로스 플랫폼 배포를 얻기 위해 몇 가지 코드를 사용할 수 있습니다 : 당신이 PHP가 새로운 충분한 경우, 당신은 또한 getallheaders을 시도 할 수

function GetHeader($myheader) { 
    if (isset($_SERVER[$myheader])) { 
    return $_SERVER[$myheader]; 
    } else { 
    $headers = apache_request_headers(); 
    if (isset($headers[$myheader])) { 
     return $headers[$myheader]; 
    } 
    } 
    return ''; 
} 

().

http://php.net/manual/en/function.getallheaders.php

+0

실제로 openserver가 설치되어 문제가 해결되었습니다. :) – user1016265

관련 문제