|
|
미리 선언된 변수
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섹션을 참고.
|