본문 바로가기

PHP/PHP Programming

[PHP] CGI 환경변수

반응형

CGI 환경변수



모든 환경 변수 목록은 phpinfo( ) 함수로 확인할 수 있습니다.


ex #01)


이렇게 선언된 변수는 다음과 같은 방법으로 가져올 수 있습니다. 이 특별한 변수는 함수에서도 global 선언 없이 바로 사용할 수 있습니다.



  √ $_SERVER['환경변수'];

  √ $GLOBALS['_SERVER']['환경변수'];

  √ $_ENV['환경변수'];

  √ GETENV('환경변수');



  PHP는 실행되는 스크립트에 적용이 되는 상당량의 "미리 선언된 변수"를 제공합니다. 하지만 이 변수의 대부분은 운영되는 서버, 서버의 버전, 서버의 설정, 다른 팩터와 관련되어 있어서 보안에 문제시 될 수 있습니다. 그런 이유로 PHP 4.2.0 이후 버전부터, php.ini인 register_globals의 기본값이 off 로 셋팅됩니다.


 register_globals를 off로 설정하면, 전역 유효영역 안의 미리 선언된 변수 집합들에 영향을 미치는데, 예를 들면, DOCUMENT_ROOT 값을 얻기 위해서 $DOCUMENT_ROOT로 변수를 사용하는 대신에 $_GET['id']로, $HOME 대신에 $_ENV['HOME']으로 변수 사용의 접근을 권고하고있고, 이 형태는 보안상으로도 유효합니다.


 CGI 환경변수에는 서버에서 전달된 요청에 대한 데이터를 포함하는데, 다음 표는 웹 서버에서 설정하는 HTTP 헤더 환경변수들을 나타냅니다.



변수

의미

 AUTH_TYPE

 · 인증방법

 CONTENT_LENGTH

 · STDIN으로 전달된 데이터 길이

 CONTENT_TYPE

 · STDIN으로 전달된 데이터 타입

 DOCUMENT_ROOT

 · 루트 디렉터리

 GATEWAY_INTERFACE

 · CGI 버전

 HTTP_ACCEPT

 · 클라이언트 MIME 타입

 HTTP_ACCEPT_CHARSET

 · 클라이언트 문자셋. Ex : 'ISO-8859-1, *, UTF-8

 HTTP_ACCEPT_ENCODING

 · 클라이언트 인코딩. Ex : gzip

 HTTP_ACCEPT_LANGUAGE

 · 클라이언트 언어. Ex : en, ko

 HTTP_CONNECTION

 · 클라이언트 연결상태

 HTTP_HOST

 · 서버 호스트 이름

 HTTP_COOKIE

 · 세션 쿠키 값

 HTTP_PEFERER

 · 이전 URL

 HTTP_USER_AGENT

 · 클라이언트 브라우저 정보

 HTTPS

 · HTTP 접속 프로토콜

 ORIG_PATH_INFO

 · PATH_INFO 원래 이름

 PATH_INFO

 · 전달된 추가 경로 정보

 PATH_TRANSLATED

 · PATH_INFO 변환버전

 PHP_AUTH_DIGEST

 · 클라이언트가 보낸 인증헤더로 설정(유효성 검사를 만들 때 사용합니다.)

 PHP_AUTH_PW

 · 사용자가 제공하는 사용자 패스워드

 PHP_AUTH_USER

 · 사용자가 제공하는 사용자 이름

 PHP_SELF

 · 현재 실행중인 스크립트의 파일 이름

 QUERY_STRING

 · 쿼리 문자열(폼의 내요을 질의된 문자열)

 REMOTE_ADDR

 · 클라이언트 IP 주소

 REMOTE_HOST

 · 클라이언트 호스트 이름

 REMOTE_PORT

 · 요청을 보낸 사용자

 REMOTE_USER

 · 인증된 사용자 이름

 REDIRECT_REMOTE_USER

 · 인증된 사용자는 요청이 내부적으로 리디렉션됨.

 REQUEST_METHOD

 · 요청 메소드(GET of Post)

 REQUEST_TIME

 · 요청 시작된 타임 스탬프. php5.1.0부터

 REQUEST_URI

 · 현재 페이지에 엑세스한 파일 경로 URI. Ex : /index.html

 SCRIPT_FILENAME

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

 SCRIPT_NAME

 · 서버 IP 주소

 SERVER_ADMIN

 · SERVER_ADMIN (아파치) 웹 서버 구성 파일 지시문에 지정된 값

 SERVER_NAME

 · 서버 호스트 이름

 SERVER_PORT

 · 서버 포트 번호

 SERVER_PROTOCOL

 · 서버 프로토콜 버전

 SERVER_SIGNATURE

 · 가상 호스트 이름을 포함하는 문자열

 SERVER_SOFTWARE

 · 서버소프트웨어 이름과 버전


 HTTP_HOST와 SERVER_NAME의 차이를 말하자면, SERVER_NAME은 Apache의 ServerName을 말하며, HTTP_HOST는 Apache인 virtualHost 에서 설정한 ServerName를 말하는데, 한 서버에 수 개의 호스트이름이 있다면 2개의 값이 달라진다는 점에 있습니다.


 HTTP_*로 시작하는 변수는 헤더변수로서 브라우저의 요청에 의해 만들어지고, 클라이언트의 컴퓨터 환경적 정보가 담깁니다. 이를 통해 클라이언트 브라우저 종류나 언어, IP주소, 접속경로로 다양한 방문자접속 통계프로그램을 만들 수 있는 것입니다.


ex #02)


ex #03)


 보안에 어느 정도 유효성을 갖고 있다면 register_globals 를 off로 해두는 게 좋으며, $_SERVER나 getenv() 함수를 이용해 환경변수를 가져 오도록 습관을 드려야 합니다.

반응형

'PHP > PHP Programming' 카테고리의 다른 글

[PHP] 가변변수  (0) 2015.03.29
[PHP] 정적변수  (0) 2015.03.29
[PHP] 함수의 기본 문법  (0) 2015.03.17
[PHP] 세션  (0) 2014.12.26
[PHP] 쿠키  (0) 2014.12.26