$_SERVER — 서버 및 실행 환경 정보

(PHP 4 >= 4.1.0, PHP 5, PHP 7, PHP 8)

$_SERVER — 서버 및 실행 환경 정보


설명

$_SERVER는 헤더, 경로 및 스크립트 위치와 같은 정보를 포함하는 배열입니다. 이 배열의 항목은 웹 서버에서 생성됩니다. 모든 웹 서버가 이러한 기능을 제공한다는 보장은 없습니다. 서버는 일부를 생략하거나 여기에 나열되지 않은 다른 것을 제공할 수 있습니다. 즉, 이러한 많은 변수가 » CGI/1.1 사양에서 설명되므로 예상할 수 있어야 합니다.

이러한 슈퍼글로벌 변수는 다음과 같습니다.


Indices

$_SERVER에서 다음 요소를 찾을 수도 있고 찾지 못할 수도 있습니다. 명령줄에서 PHP를 실행하는 경우 이들 중 몇 개만 사용할 수 있습니다(또는 실제로 의미가 있음).

'PHP_SELF'
문서 루트를 기준으로 현재 실행 중인 스크립트의 파일 이름입니다. 예를 들어 http://example.com/foo/bar.php 주소의 스크립트에서 $_SERVER['PHP_SELF']/foo/bar.php가 됩니다. __FILE__ 상수는 현재(즉, 포함된) 파일의 전체 경로와 파일 이름을 포함합니다. PHP가 명령줄 프로세서로 실행 중인 경우 이 변수에는 스크립트 이름이 포함됩니다.
'argv'
스크립트에 전달된 인수의 배열입니다. 스크립트가 명령줄에서 실행되면 명령줄 매개변수에 대한 C 스타일 액세스가 제공됩니다. GET 메서드를 통해 호출되면 쿼리 문자열이 포함됩니다.
'argc'
스크립트에 전달된 명령줄 매개변수의 수를 포함합니다(명령줄에서 실행되는 경우).
'GATEWAY_INTERFACE'
서버가 사용 중인 CGI 사양의 개정판입니다. 예를 들어 'CGI/1.1'.
'SERVER_ADDR'
현재 스크립트가 실행 중인 서버의 IP 주소입니다.
'SERVER_NAME'
현재 스크립트가 실행 중인 서버 호스트의 이름입니다. 스크립트가 가상 호스트에서 실행 중인 경우 이는 해당 가상 호스트에 대해 정의된 값이 됩니다.

참고: Apache 2에서는 UseCanonicalName = OnServerName을 설정해야 합니다. 그렇지 않으면 이 값은 스푸핑될 수 있는 클라이언트에서 제공한 호스트 이름을 반영합니다. 보안 종속 컨텍스트에서 이 값에 의존하는 것은 안전하지 않습니다.

'SERVER_SOFTWARE'
요청에 응답할 때 헤더에 제공되는 서버 식별 문자열입니다.
'SERVER_PROTOCOL'
페이지가 요청된 정보 프로토콜의 이름 및 개정판 예를 들어 'HTTP/1.0';
'REQUEST_METHOD'
페이지에 액세스하는 데 사용된 요청 방법입니다. 예를 들어 'GET', 'HEAD', 'POST', 'PUT'.

참고: 요청 메서드가 HEAD인 경우 헤더를 보낸 후(출력 버퍼링 없이 출력을 생성한 후를 의미함) PHP 스크립트가 종료됩니다.

'REQUEST_TIME'
요청 시작의 타임스탬프입니다.
'REQUEST_TIME_FLOAT'
마이크로초 정밀도로 요청 시작의 타임스탬프입니다.
'QUERY_STRING'
페이지에 액세스한 쿼리 문자열(있는 경우)입니다.
'DOCUMENT_ROOT'
서버의 구성 파일에 정의된 대로 현재 스크립트가 실행되고 있는 문서 루트 디렉토리입니다.
'HTTP_ACCEPT'
현재 요청의 Accept: 헤더 내용(있는 경우).
'HTTP_ACCEPT_CHARSET'
현재 요청의 Accept-Charset: 헤더 내용(있는 경우). 예: 'iso-8859-1,*,utf-8'.
'HTTP_ACCEPT_ENCODING'
현재 요청의 Accept-Encoding: 헤더 내용(있는 경우). 예: 'gzip'.
'HTTP_ACCEPT_LANGUAGE'
현재 요청의 Accept-Language: 헤더 내용(있는 경우). 예: 'en'.
'HTTP_CONNECTION'
Connection의 내용: 현재 요청의 헤더(있는 경우). 예: '연결 유지'.
'HTTP_HOST'
Host: 현재 요청의 헤더 내용(있는 경우).
'HTTP_REFERER'
사용자 에이전트를 현재 페이지로 참조한 페이지(있는 경우)의 주소입니다. 이것은 사용자 에이전트에 의해 설정됩니다. 모든 사용자 에이전트가 이것을 설정하는 것은 아니며 일부는 HTTP_REFERER를 기능으로 수정하는 기능을 제공합니다. 한마디로 정말 ​​믿을 수 없습니다.
'HTTP_USER_AGENT'
User-Agent: 헤더가 있는 경우 현재 요청의 내용입니다. 이것은 페이지에 액세스하는 사용자 에이전트를 나타내는 문자열입니다. 일반적인 예는 Mozilla/4.5 [en](X11; U; Linux 2.2.9 i586)입니다. 무엇보다도 이 값을 get_browser()와 함께 사용하여 페이지의 출력을 사용자 에이전트의 기능에 맞출 수 있습니다.
'HTTPS'
스크립트가 HTTPS 프로토콜을 통해 쿼리된 경우 비어 있지 않은 값으로 설정합니다.
'REMOTE_ADDR'
사용자가 현재 페이지를 보고 있는 IP 주소입니다.
'REMOTE_HOST'
사용자가 현재 페이지를 보고 있는 호스트 이름입니다. 역방향 DNS 조회는 사용자의 REMOTE_ADDR을 기반으로 합니다.

참고: 이 변수를 생성하려면 웹 서버를 구성해야 합니다. 예를 들어 Apache에서 존재하려면 httpd.conf 내부에 HostnameLookups On이 필요합니다. gethostbyaddr()도 참조하십시오.

'REMOTE_PORT'
웹 서버와 통신하기 위해 사용자의 컴퓨터에서 사용되는 포트입니다.
'REMOTE_USER'
인증된 사용자입니다.
'REDIRECT_REMOTE_USER'
요청이 내부적으로 리디렉션되는 경우 인증된 사용자입니다.
'SCRIPT_FILENAME'
현재 실행 중인 스크립트의 절대 경로 이름입니다.

참고: CLI를 사용하여 스크립트를 실행하면 file.php 또는 ../file.php와 같은 상대 경로로 $_SERVER['SCRIPT_FILENAME']에 사용자가 지정한 상대 경로가 포함됩니다.

'SERVER_ADMIN'
웹 서버 구성 파일의 SERVER_ADMIN(Apache용) 지시문에 지정된 값입니다. 스크립트가 가상 호스트에서 실행 중인 경우 이는 해당 가상 호스트에 대해 정의된 값이 됩니다.
'SERVER_PORT'
웹 서버가 통신을 위해 사용하는 서버 시스템의 포트입니다. 기본 설정의 경우 '80'이 됩니다. 예를 들어 SSL을 사용하면 정의된 보안 HTTP 포트가 무엇이든 간에 이를 변경합니다.

참고: Apache 2에서 물리적(실제) 포트를 가져오려면 UseCanonicalName = OnUseCanonicalPhysicalPort = On을 설정해야 합니다. 그렇지 않으면 이 값이 스푸핑되어 물리적 포트 값을 반환하거나 반환하지 않을 수 있습니다. 보안 종속 컨텍스트에서 이 값에 의존하는 것은 안전하지 않습니다.

'SERVER_SIGNATURE'
활성화된 경우 서버 생성 페이지에 추가되는 서버 버전 및 가상 호스트 이름을 포함하는 문자열입니다.
'PATH_TRANSLATED'
서버가 가상 대 실제 매핑을 수행한 후 현재 스크립트에 대한 파일 시스템(문서 루트 아님) 기반 경로입니다.

참고: Apache 2 사용자는 httpd.conf 내에서 AcceptPathInfo = On을 사용하여 PATH_INFO를 정의할 수 있습니다.

'SCRIPT_NAME'
현재 스크립트의 경로를 포함합니다. 이것은 자신을 가리켜야 하는 페이지에 유용합니다. __FILE__ 상수는 현재(즉, 포함된) 파일의 전체 경로와 파일 이름을 포함합니다.
'REQUEST_URI'
이 페이지에 액세스하기 위해 제공된 URI입니다. 예: '/index.html'.
'PHP_AUTH_DIGEST'
Digest HTTP 인증을 수행할 때 이 변수는 클라이언트가 보낸 'Authorization' 헤더로 설정됩니다(그런 다음 적절한 유효성 검사를 수행하는 데 사용해야 함).
'PHP_AUTH_USER'
HTTP 인증을 수행할 때 이 변수는 사용자가 제공한 사용자 이름으로 설정됩니다.
'PHP_AUTH_PW'
HTTP 인증을 수행할 때 이 변수는 사용자가 제공한 암호로 설정됩니다.
'AUTH_TYPE'
HTTP 인증을 수행할 때 이 변수는 인증 유형으로 설정됩니다.
'PATH_INFO'
실제 스크립트 파일 이름 뒤에 있지만 사용 가능한 경우 쿼리 문자열 앞에 클라이언트가 제공한 경로 이름 정보가 포함되어 있습니다. 예를 들어 URL http://www.example.com/php/path_info.php/some/stuff?foo=bar를 통해 현재 스크립트에 액세스한 경우 $_SERVER['PATH_INFO']에는 /some/stuff가 포함됩니다.
'ORIG_PATH_INFO'
PHP에서 처리하기 전의 'PATH_INFO' 원본 버전입니다.

Examples

예제 #1 $_SERVER 예

                  
<?php
echo $_SERVER['SERVER_NAME'];
?>
                  
                

위의 예는 다음과 유사한 결과를 출력합니다.

www.example.com
                

노트

메모: 이것은 'superglobal' 또는 자동 글로벌 변수입니다. 이것은 단순히 스크립트 전체에서 모든 범위에서 사용할 수 있음을 의미합니다. global $variable;을 수행할 필요가 없습니다. 함수 또는 메서드 내에서 액세스합니다.


기타