PHP 매뉴얼
이전 | 7. 장. 변수 | 다음

# 미리 선언된 변수

PHP는 실행되는 스크립트에 적용이되는 상당량의 미리 선언된 변수를 제공한다. 하지만, 이 변수의 대부분은 운영되는 서버, 서버의 버전, 서버의 설정, 다른 팩터와 관련되어 있어서 완벽하게 문서화되지 않았다. 이 중 몇개의 변수는 커맨드 라인에서 실행되는 PHP에서는 유효하지 않다. 예약된 미리 선언된 변수의 섹션을 참고.

주의

PHP 4.2.0 이후 버전부터, PHP 디렉티브 register_globals의 기본값은 off가 되었다. register_globals를 off로 놓으면, 전역 유효영역안의 미리 선언된 변수 집합들에 영향을 미친다. 예를 들면, `DOCUMENT_ROOT`값을 얻기 위해서는 `$DOCUMENT_ROOT` 대신에 `$_SERVER['DOCUMENT_ROOT']`를, `http://www.example.com/test.php?id=3`에서 `$id` 대신에 `$_GET['id']`를, `$HOME` 대신에 `$_ENV['HOME']`을 사용해야 한다.

이와 관련된 변경사항은 register_globals의 설정 엔트리를 읽거나, 전역 등록 사용하기에 관한 보안 챕터는 물론, 4.1.0과 4.2.0 Release Announcements도 참고하기 바란다.

superglobal arrays와 같은 가용한 PHP의 예약된 미리 선언된 변수를 사용하는 것을 추천한다.

4.1.0 버전 이후에, PHP는 웹서버, 환경, 유저 입력과 관련된 미리 선언된 배열 변수 집합을 추가적으로 제공한다. 이 새로운 배열은 자동적으로 전역화되기 때문에 더 특별해진다. 즉, 자동적으로 모든 유효영역안에서 적용이 가능하다. 이런 이유로, 이런 변수를 '자동전역변수' 또는 '슈퍼전역변수' 이라고 불리기도 한다. (PHP에서는 사용자-선언 슈퍼전역변수가 허용되지 않는다.) 슈퍼전역변수는 아래에 열거한다. 하지만, 이 변수 목록과 논의는 예약된 미리선언된 변수섹션을 참고한다. 또한 구버전의 미리선언된 변수(`$HTTP_*_VARS`)가 아직도 존재한다는 것에 주의한다. PHP 5.0.0부터, 긴 형태의 PHP 예약 변수 배열을 register_long_arrays 지시어로 비활성화할 수 있습니다.

> 가변 변수: 슈퍼전역변수는 가변 변수로는 쓰일수 없다.

variables_order내의 특정 변수들이 설정되어있지 않으면, 적합한 PHP의 미리선언된 배열도 비워있게 된다.

PHP 슈퍼전역변수

$GLOBALS

  스트립트의 전역 유효영역에서 쓸수있는 모든 변수에 대한 참조를 포함한다. 이 배열의 key는 전역 변수들의 이름이다. PHP 3 이래로 `$GLOBALS`가 존재해왔다.

$_SERVER

  웹서버나, 현재 스크립트의 실행환경에 직접적으로 관련되어 설정되는 변수이다. 구버전의 `$HTTP_SERVER_VARS` 배열과 동일하다. (이 변수는 현재 유효하지만, 추천하지는 않는다)

$_GET

  HTTP GET에 의해 스크립트로 제공되는 변수이다. 구버전의 `$HTTP_GET_VARS` 배열과 동일하다. (이 변수는 현재 유효하지만, 추천하지는 않는다)

$_POST

  HTTP POST에 의해 스크립트로 제공되는 변수이다. 구버전의 `$HTTP_POST_VARS` 배열과 동일하다. (이 변수는 현재 유효하지만, 추천하지는 않는다)

$_COOKIE

  HTTP 쿠키에 의해 스크립트로 제공되는 변수이다. 구버전의 `$HTTP_COOKIE_VARS` 배열과 동일하다. (이 변수는 현재 유효하지만, 추천하지는 않는다)

$_FILES

  HTTP post 파일 업로드에 의해 스크립트로 제공되는 변수이다. 구버전의 `$HTTP_POST_FILES` 배열과 동일하다. (이 변수는 현재 유효하지만, 추천하지는 않는다). 더 자세한 정보는 POST 메소드 업로드를 참고하도록 한다.

$_ENV

  환경에 의해 스크립트로 제공되는 변수이다. 구버전의 `$HTTP_ENV_VARS` 배열과 동일하다. (이 변수는 현재 유효하지만, 추천하지는 않는다)

$_REQUEST

  GET, POST, COOKIE 입력 메카니즘을 통해 스크립트로 제공되는 변수이다. 이 메카니즘은 신용될수는 없다. 이 배열 안에 포함된 존재하는 변수와 변수의 나열 순서는 PHP variables_order 설정 디렉티브에 의해 정의된다. 이 배열은 PHP 4.1.0 이전 버전에서 동일한 변수가 존재하지 않는다. import_request_variables()도 참고.

  경고
  PHP 4.3.0이후, `$_REQUEST` 안에 FILE 정보를 갖는 `$_FILES` 변수가 존재하지 않게 되었다.

  > 참고: 커맨드 라인에서 수행될때, 이 변수는 `argv`와 `argc` 엔트리에 포함되지 않는다; 이 변수들은 `$_SERVER` 배열에 존재한다.

$_SESSION

  스크립트의 세션에 등록되는 변수이다. 구버전의 `$HTTP_SESSION_VARS` 배열과 동일하다. (이 변수는 현재 유효하지만, 추천하지는 않는다). 더 자세한 정보는 Session handling functions섹션을 참고.

이전 | 처음으로 | 다음
변수 | 위로 | 변수 유효영역