$_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 = On
및ServerName
을 설정해야 합니다. 그렇지 않으면 이 값은 스푸핑될 수 있는 클라이언트에서 제공한 호스트 이름을 반영합니다. 보안 종속 컨텍스트에서 이 값에 의존하는 것은 안전하지 않습니다. - '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 = On
및UseCanonicalPhysicalPort = 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;을 수행할 필요가 없습니다. 함수 또는 메서드 내에서 액세스합니다.