그곰의 생활

서버변수 $_SERVER 본문

Server-side/PHP

서버변수 $_SERVER

그곰 2011. 8. 31. 16:53

서버 변수: $_SERVER 
참고: 4.1.0부터 지원됨. 이전 버전은 $HTTP_SERVER_VARS을 사용함 

$_SERVER는 헤더, 경로, 스크립트 위치와 같은 정보를 포함하는 배열이다. 이 배열 안의 엔트리는 웹서버에 의해 생성된다. 모든 웹서버가 이런 것들을 제공한다는 보장은 없다. 서버는 어떤것은 빠뜨리거나 여기에서 목록화된 것 외의 것을 제공할수 도 있다. 이런 많은 수의 변수들은 CGI 1.1 specification에 기반하므로, 그런 변수들은 기대할수 있을것이다. 

이 변수는 '슈퍼전역', 또는 자동 전역, 변수이다. 즉 스크립트내의 모든 유효영역안에서 사용가능하다는 의미를 갖는다. $HTTP_SERVER_VARS를 사용할때와 같이 함수나 메소드 안에서 사용하기 위해 global $_SERVER;를 할 필요는 없다. 

$HTTP_SERVER_VARS는 동일한 초기 정보를 포함하지만, 자동전역은 아니다.($HTTP_SERVER_VARS 와 $_SERVER는 다른 변수이고 PHP는 그변수들을 따로 다루게 된다는 것에 주의한다) 

register_globals 디렉티브가 설정되어있으면, 이 변수들은 스크립트의 전역 유효영역에서 사용이 가능해 진다. 즉 $_SERVER 와 $HTTP_SERVER_VARS 배열과 분리된다. 관련정보는 전역 등록 사용하기라는 이름의 보안 챕터를 참고한다. 이들 각각의 전역은 자동전역이 아니다. 

$_SERVER에서는 다음 구성요소를 확인할수도 있고 그렇지 않은수있다. 이 변수중 일부(심지어모두)는 PHP가 커맨드 라인에서 수행되고 있을때에는 보여지지 않을것이다. 



'PHP_SELF' 
현재 실행중인 스크립트의 파일명이고, 도규먼트 루트에 상대적인 경로를 갖는다. 예를 들면, 주소 http://example.com/test.php/foo.bar의 스크립트에서 $_SERVER['PHP_SELF']은 /test.php/foo.bar이 될것이다. 

PHP가 커맨드 라인 프로세서로 실행중이면, 이 변수는 나타나지 않는다. 

'argv' 
스크립트로 전달되는 인자의 배열. 스크립트가 커맨드 라인에서 실행중이면, 이 변수는 C-스타일의 커맨드 라인 인자로 제공된다. GET 메소드에 의해 호출될때에는 이 변수는 질의 문자열(query string)을 포함할것이다. 

'argc' 
스크립트로 전달되는 커맨드 라인 인자의 갯수 (커맨드 라인에서 실행중일때) 

'GATEWAY_INTERFACE' 
서버가 사용하는 CGI 사양(specification)의 버전: 예를 들면, 'CGI/1.1'. 

'SERVER_NAME' 
현재 스크립트가 수행되고 있는 서버 호스트의 이름. 스크립트가 가상 호스트에서 수행중이면, 이 변수는 그 가상 호스트를 위해 정의된 값이 될것이다. 

'SERVER_SOFTWARE' 
서버 식별 문자열. 요구(ruquest)에 응답할때 헤더안에서 보여준다. 

'SERVER_PROTOCOL' 
페이지가 요청되어진 정보 프로토콜의 이름과 버전: 예를 들면, 'HTTP/1.0'; 

'REQUEST_METHOD' 
페이지에 접근할때 사용된 요청 메소드 종류. 예를 들면,'GET', 'HEAD', 'POST', 'PUT'. 

'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()로 이 값을 사용하여 유저 에이전트의 능력에 맞게 페이지의 출력을 조절할수 있다. 

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

'REMOTE_HOST' 
현재 페이지를 보고있는 유저의 호스트명. 역방향 dns 검색이 유저의 REMOTE_ADDR를 위해 사용된다. 

참고: 웹서버는 이 변수를 생성할수 있도록 설정되어야 한다. 예를 들면 아파치에서는 httpd.conf안에서 HostnameLookups On 이 필요할것이다. gethostbyaddr()도 참고. 

'REMOTE_PORT' 
웹서버와 통신중인 유저 머신이 사용중인 포트. 

'SCRIPT_FILENAME' 
현재 수행되는 스크립트의 절대 경로명. 

참고: file.php, ../file.php처럼 스크립트를 상대 경로로 지정하여 CLI로 실행할 경우, $_SERVER['SCRIPT_FILENAME']은 사용자가 지정한 상대 경로를 포함합니다. 


'SERVER_ADMIN' 
웹서버 설정 파일안의 SERVER_ADMIN (아파치용) 디렉티브에 주어지는 값. 스크립트가 가상 호스트에서 수행중이면, 이 값은  가상호스트를 위해 정의되는 값이 될것이다. 

'SERVER_PORT' 
웹서버가 통신을 위해 사용중인 서버 머신의 포트. 초기 설정값으로 '80';이 될것이다. 예를 들어, SSL을 사용중이면, 안전한 HTTP 포트로 정의된 어떤 값으로도 변경할수 있다. 

'SERVER_SIGNATURE' 
활설화되어있다면, 서버가 생성하는 페이지에 추가되는 서버 버전과 가상 호스트명을 갖는 문자열. 

'PATH_TRANSLATED' 
현재 스크립트에 대한 파일시스템(다큐먼트 루트가 아님) 기반의 경로 서버가 virtual-to-real 매핑으로 설정되면 보인다. 

'SCRIPT_NAME' 
현재 스크립트의 경로를 갖는다. 이 값은 가리킬 필요가 있는 페이지에 유용하다. 

'REQUEST_URI' 
이 페이지에 접근하기 위해 주어지는 URI; 예를 들면,'/index.html'. 

'PHP_AUTH_USER' 
HTTP 인증을 사용하는 모듈로서 아파치에서 수행될때, 이 변수는 유저에 의해 제공되는 username으로 설정된다. 

'PHP_AUTH_PW' 
HTTP 인증을 사용하는 모듈로서 아파치에서 수행될때, 이 변수는 유저가 제공하는 password로 설정된다. 

'AUTH_TYPE' 
HTTP 인증을 사용하는 모듈로서 아파치에서 수행될때, 이 변수는 인증 타입으로 설정된다.





원문 : http://blog.naver.com/sommer06/80033931564

'Server-side > PHP' 카테고리의 다른 글

PHP Header 정보 추출  (0) 2011.09.01
썸네일 이미지 만들기  (0) 2011.08.31
이미지 정보 추출 메소드  (0) 2011.08.31
중복선언 확인함수  (0) 2011.08.31
네이버 지도 API 사용예제  (0) 2011.06.24
Comments