티스토리 뷰

웹개발/Php

$_SERVER 변수

yaku 2016. 2. 26. 16:38

http://php.net/manual/kr/reserved.variables.server.php


$_SERVER

$HTTP_SERVER_VARS[삭제]

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


$_SERVER -- $HTTP_SERVER_VARS[삭제] — 서버 정보 및 실행 시 환경 정보


설명

$_SERVER 는 헤더, 패스, 스크립트의 위치 같은 정보를 가진 배열입니다. 이 배열의 항목은 Web서버에 의한 생성됩니다. 모든 Web서버가 이들 모두를 제공하는 보장은 없습니다. 서버는 이들 몇몇을 생략하거나 이 목록에 없는 다른 것을 정의할 가능성이 있습니다. 이들 변수의 대부분은 » CGI/1.1 specification 에서 정의되어 있습니다. 그러므로 이들에 대해서는 정의되고 있음을 기대할 수 있습니다.


주의: PHP 5.4.0보다 이전 버전에서는$HTTP_SERVER_VARS 에도 같은 초기 정보가 포함되어 있었는데, 슈퍼 글로벌 지 않았습니다 (라HTTP_SERVER_VARS 고 $_SERVER 다른 변수이며 PHP는 다른 변수로 처리를 실시하는 것에 주의하세요).

인덱스

이하의 각 요소의 몇몇은$_SERVER 나타나지 않을 가능성이 있습니다. PHP 를 명령 라인에서 실행하는 경우에는 사용할 수 있는 것은 극히 적다는 점에 유의하세요.


'PHP_SELF'

현재 실행하고 있는 스크립트 파일 이름입니다. 문서 루트에서 취득됩니다. 예를 들어 하http://example.com/foo/bar.php 는 주소상에 있는 스크립트에서는$_SERVER['PHP_SELF'] 은/foo/bar.php 입니다. __FILE__ 상수 에는 커런트(즉 읽힌)파일의 패스와 파일 이름이 포함됩니다. PHP가 명령어 라인에서 실행될 경우 PHP 4.3.0이후 이 변수에는 스크립트 이름이 포함됩니다. 이보다 이전 버전에서는 이 변수는 사용할 수 없습니다.

'argv'

스크립트에 전달된 인수의 배열입니다. 스크립트가 명령어 라인 실행된 경우 C언어 스타일로 명령 라인 인수로 접속할 수 있습니다. GET메소드를 통하여 호출된 경우에는 검색 매개 변수가 저장됩니다.

'argc'

스크립트에 전달된 명령어 라인 인수의 수 (명령 라인에서 실행한 경우)입니다.

'GATEWAY_INTERFACE'

서버가 사용 중인 CGI의 버전입니다. 예 우 039;CGI/1.1'

'SERVER_ADDR'

현재의 스크립트가 실행되고 있는 서버의 IP주소입니다.

'SERVER_NAME'

현재의 스크립트가 실행되고 있는 서버의 호스트 이름입니다. 스크립트가 가상 호스트 상에서 실행되고 있는 경우는 그 가상 호스트 이름입니다.

'SERVER_SOFTWARE'

리스폰스 헤더 위에 쓰여진 서버의 인식 문자열입니다.

'SERVER_PROTOCOL'

페이지가 요청되었을 때의 프로토콜명과 버전입니다. 예.'HTTP/1.0'

'REQUEST_METHOD'

페이지에 접속할 때 사용된 리퀘스트 메소드 이름입니다. 'GET', 'HEAD', 'POST', 'PUT'등.

주의:


리퀘스트 메소드가HEAD 있기, PHP스크립트는 헤더를 송신한 후(다시 말하면 출력 버퍼 링을 하지 않고 전 출력을 처리한 뒤)에 종료합니다.

'REQUEST_TIME'

리퀘스트의 시작 당시의 타임 스탬프. PHP 5.1.0이후 이용 가능.

'REQUEST_TIME_FLOAT'

리퀘스트의 시작 당시의 타임 스탬프(마이크로 초까지 정확도). PHP 5.4.0이후 이용 가능.

'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: 헤더가 만약 있었다면 그 내용. 예:'Keep-Alive'

'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프로토콜을 통해서 실행되고 있는 경우에 하늘 아니라 값이 설정됩니다.

주의: ISAPI을 IIS에서 사용하는 경우는 HTTPS프로토콜 지도 않고 신청이 이루어졌을 때의 값은 off 되는 점에 주의합시다.

'REMOTE_ADDR'

현재 페이지를 보고 있는 유저의 IP주소.

'REMOTE_HOST'

현재 페이지에 접속하고 있는 호스트 이름. DNS의 역순 검색은 사용자에REMOTE_ADDR 근거하고 있습니다.

주의: Web서버가 이 값을 생성할 수 있도록 설정되어 있을 필요가 있습니다. 예를 들면 Apache의 경우가HostnameLookups On httpd.conf 로 설정되지 않으면 이 값은 생성되지 않습니다. gethostbyaddr() 보세요.

'REMOTE_PORT'

사용자의 머신에서 Web서버로의 통신에 사용되고 있는 포토 번호

'REMOTE_USER'

인증된 사용자.

'REDIRECT_REMOTE_USER'

리퀘스트가 내부에서 방향 수정된 경우 인증된 사용자.

'SCRIPT_FILENAME'

현재 실행되고 있는 스크립트의 절대 경로


주의:


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

'SERVER_ADMIN'

Web서버의 설정 파일의 SERVER_ADMIN(Apache의 경우)지시문 에 설정되어 있는 값. 스크립트가 가상 호스트 상에서 실행되고 있는 경우, 가상 호스트에 대해서 값이 정의됩니다.

'SERVER_PORT'

Web서버의 통신 포트로 사용되고 있는 포토 번호. 기본적으로 '80'지만 예를 들면 SSL을 사용하고 있는 경우는 시큐어 HTTP포트로 설정되어 있는 값으로 바뀝니다.

주의: Apache 2에서는UseCanonicalName = On 뿐 아니라 UseCanonicalPhysicalPort = On 도 설정하지 않으면 물리 포트 (실제 포토)을 취득할 수 없습니다. 설정하지 않으면, 이 값은 위조할 수 있는 상태로 되어 물리 포트를 안 갚 수도 있어요. 보안에 의존하는 콘텍스트에서 이 값에 의존하는 것은 안전하지 않습니다.

'SERVER_SIGNATURE'

서버에서 생성된 페이지에 추가하는 서버 버전 이름과 가상 호스트 이름 문자열. Web서버의 설정에서 활성화 되어 있는 것이 필요합니다.

'PATH_TRANSLATED'

가상에서 리얼에 대한 매핑이 이루어진 후, 현재의 스크립트 파일 시스템상(문서 루트가 아니라) 에서 패스.

주의: PHP 4.3.2이후PATH_TRANSLATED 는 Apache 2SAPI 에서 암묵적으로 설정되지 않는다 되었습니다. 한편, Apache 1에서는 이 값이 Apache로 설정되지 않는 경우 SCRIPT_FILENAME 라고 같은 값으로 설정됩니다. 이 변경은PATH_TRANSLATED 은 PATH_INFO 이 정의되어 있는 경우만 존재해야 한다는CGI 규정을 충족시키기 위해서 했습니다. Apache 2사용자는PATH_INFO 을 정의하기 위해서 httpd.conf 중 AcceptPathInfo = On 를 사용할 수 있습니다.

'SCRIPT_NAME'

현재의 스크립트의 패스. 스크립트 자신의 페이지를 지정하는데 유용합니다. __FILE__ 정수에는 커런트(즉 읽힌)파일의 패스와 파일 이름이 포함됩니다.

'REQUEST_URI'

페이지에 접근하기 위해서 지정된 URI. 예컨대 '/index.html'

'PHP_AUTH_DIGEST'

HTTP다이제스트 인증을 가고 있는 경우 클라이언트로부터 송신된'Authorization'헤더의 내용이 설정됩니다( 적절한 인증 처리를 하기 위해서 이용합니다).

'PHP_AUTH_USER'

HTTP인증하고 있을 때 그 유저명이 세팅됩니다.

'PHP_AUTH_PW'

HTTP인증하고 있을 때 해당 사용자의 패스워드가 세팅됩니다.

'AUTH_TYPE'

HTTP인증하고 있을 때 그 인증 형식이 세팅됩니다.

'PATH_INFO'

실제 스크립트 파일 이름과 쿼리 문자열 사이에 있어 클라이언트가 제공하는 경로 이름 정보. 예를 들어 현재의 스크립트에 http://www.example.com/php/path_info.php/some/stuff?foo=bar 라는 URL로 접속하던 경우에는$_SERVER['PATH_INFO'] /some/stuff 입니다.

'ORIG_PATH_INFO'

PHP로 처리되기 전인'PATH_INFO'의 원본.

'웹개발 > Php' 카테고리의 다른 글

도메인 주도설계 이해하기  (0) 2016.05.04
자꾸 헷깔리는 isset, empty, is_Null  (0) 2016.04.14
phpStorm 유용한 단축키  (0) 2016.02.26
모던 php 공부하기!  (0) 2016.01.30
VirtualBox, vagrant 이용하여 라라벨 설치하기  (0) 2016.01.30
댓글
댓글쓰기 폼