Computer >> 컴퓨터 >  >> 프로그래밍 >> PHP

PHP $_ENV 슈퍼글로벌 변수 완벽 정리 - 환경 변수 활용법

PHP $_ENV란 무엇인가?

$_ENV는 PHP의 슈퍼글로벌(superglobal) 연관 배열 중 하나로, 현재 실행 중인 스크립트에서 접근 가능한 환경 변수(environment variables)를 저장합니다. 과거에는 동일한 정보를 담는 $HTTP_ENV_VARS 변수도 존재했지만, 이는 슈퍼글로벌이 아니며 현재는 폐기(deprecated)된 상태이므로 사용하지 않는 것이 좋습니다.

환경 변수는 전역 네임스페이스(global namespace)로 가져와집니다. 이 변수들의 대부분은 PHP 파서가 실행되는 셸(shell)에 의해 제공되기 때문에, 운영체제나 플랫폼에 따라 환경 변수 목록이 달라질 수 있습니다.

또한 PHP가 서버 모듈 또는 CGI 프로세서로 동작하는 경우에는 CGI 관련 변수들도 이 배열에 포함됩니다.

getenv() 함수로 환경 변수 조회하기

PHP에서는 getenv() 함수를 사용하여 모든 환경 변수 목록을 가져오거나, 특정 환경 변수의 값을 조회할 수 있습니다.

전체 환경 변수 출력 예제

다음 스크립트는 현재 사용 가능한 모든 환경 변수의 키와 값을 화면에 출력합니다.

<?php
$arr = getenv();
foreach ($arr as $key => $val)
echo "$key=>$val\n";
?>

특정 환경 변수 값 가져오기

특정 변수의 값만 필요하다면, 해당 변수 이름을 getenv() 함수의 인자로 전달하면 됩니다.

<?php
echo "Path: " . getenv("PATH");
?>

실행 결과

브라우저에는 아래와 유사한 결과가 출력됩니다.

Path: /usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/root/.sdkman/candidates/kotlin/current/bin:/sbin:/bin

putenv() 함수로 환경 변수 설정하기

PHP는 putenv() 함수를 통해 새로운 환경 변수를 생성할 수도 있습니다. 단, 이렇게 생성된 환경 변수는 현재 요청(request)이 종료될 때까지만 유효합니다.

보안 관련 주의사항

  • 중요한 환경 변수의 값을 변경하는 것은 피해야 합니다.
  • 기본적으로 사용자는 PHP_로 시작하는 환경 변수(예: PHP_FOO=BAR)만 설정할 수 있습니다.

php.ini 파일의 safe_mode_protected_env_vars 지시자에는 쉼표로 구분된 환경 변수 목록이 포함되어 있으며, 여기에 등록된 변수는 최종 사용자가 putenv() 함수로 변경할 수 없습니다.

putenv() 사용 예제

<?php
putenv("PHP_TEMPUSER=GUEST");
echo "Temp user: " . getenv("PHP_TEMPUSER");
?>

실행 결과

브라우저에는 다음과 같은 결과가 표시됩니다.

Temp user: GUEST

마무리

$_ENV 슈퍼글로벌 배열과 getenv(), putenv() 함수를 활용하면 PHP 스크립트에서 시스템 환경 변수를 손쉽게 읽고 설정할 수 있습니다. 다만 보안상의 이유로 중요한 시스템 변수를 임의로 변경하지 않도록 주의해야 하며, php.ini의 보안 관련 지시자 설정도 함께 확인하는 것이 좋습니다.