여러 환경 처리
개발자는 애플리케이션이 개발 환경에서 실행되는지 운영 환경에서 실행되는지에 따라 시스템 동작이 달라지길 원하는 경우가 많습니다. 예를 들어 자세한 오류 출력은 개발 중에는 유용하지만, 서비스(“live”) 중에는 보안 문제가 될 수 있습니다. 또한 개발 환경에서는 운영 환경과 달리 추가 도구를 로드하고 싶을 수도 있습니다.
정의된 환경
기본적으로 CodeIgniter에는 세 가지 환경이 정의되어 있습니다.
운영용
production개발용
developmentPHPUnit 테스트용
testing
중요
testing 환경은 PHPUnit 테스트 전용으로 예약되어 있습니다. 이를 지원하기 위한 특수 조건이 프레임워크 여러 위치에 내장되어 있습니다. 이 환경은 개발 용도로 사용할 수 없습니다.
예를 들어 스테이징용 등 다른 환경이 필요하면 사용자 정의 환경을 추가할 수 있습니다. 환경 추가 를 참고하세요.
환경 설정
ENVIRONMENT 상수
환경을 설정하기 위해 CodeIgniter는 ENVIRONMENT 상수를 제공합니다. $_SERVER['CI_ENVIRONMENT'] 를 설정하면 그 값을 사용하고, 그렇지 않으면 기본값 production 을 사용합니다.
이는 서버 구성에 따라 여러 방법으로 설정할 수 있습니다.
.env
변수를 설정하는 가장 간단한 방법은 .env file 에서 설정하는 것입니다.
CI_ENVIRONMENT = development
참고
spark env 명령으로 .env 파일의 CI_ENVIRONMENT 값을 변경할 수 있습니다:
php spark env production
Apache
이 서버 변수는 .htaccess 파일 또는 Apache 설정에서 SetEnv 를 사용해 설정할 수 있습니다.
SetEnv CI_ENVIRONMENT development
nginx
nginx에서는 환경 변수가 $_SERVER 변수에 나타나도록 fastcgi_params 를 통해 전달해야 합니다. 이렇게 하면 전용 서버에서는 문제없이 동작하는 서버 전체 env 설정 대신, 가상 호스트 수준에서 작동하게 할 수 있습니다. 그런 다음 서버 설정을 다음과 같이 수정합니다:
server {
server_name localhost;
include conf/defaults.conf;
root /var/www;
location ~* \.php$ {
fastcgi_param CI_ENVIRONMENT "production";
include conf/fastcgi-php.conf;
}
}
nginx 및 다른 서버에서는 대체 방법도 사용할 수 있으며, 이 로직을 완전히 제거하고 (예를 들어) 서버 IP 주소를 기준으로 상수를 설정할 수도 있습니다.
이 상수는 기본 프레임워크 동작 일부(다음 섹션 참고)에 영향을 줄 뿐 아니라, 현재 어떤 환경에서 실행 중인지 구분하기 위해 개발 코드에서 직접 사용할 수도 있습니다.
환경 추가
사용자 정의 환경을 추가하려면 해당 부트 파일만 추가하면 됩니다.
부트 파일
CodeIgniter는 환경 이름과 일치하는 PHP 스크립트가 APPPATH/Config/Boot 아래에 있어야 합니다. 이 파일에는 오류 표시 설정 변경, 추가 개발 도구 로드 등 환경별로 원하는 어떤 사용자 지정이든 포함할 수 있습니다. 이 파일들은 시스템이 자동으로 로드합니다. 새로 설치하면 다음 파일이 이미 생성되어 있습니다:
development.php
production.php
testing.php
예를 들어 스테이징용 staging 환경을 추가하려면 다음만 수행하면 됩니다:
APPPATH/Config/Boot/production.php 를 staging.php 로 복사합니다.
원한다면 staging.php 에서 설정을 사용자 지정합니다.
현재 환경 확인
현재 환경을 확인하려면 ENVIRONMENT 상수를 출력하면 됩니다.
spark env 명령으로도 현재 환경을 확인할 수 있습니다:
php spark env
기본 프레임워크 동작에 미치는 영향
CodeIgniter 시스템에는 ENVIRONMENT 상수를 사용하는 부분이 있습니다. 이 섹션에서는 기본 프레임워크 동작이 어떻게 영향을 받는지 설명합니다.
오류 보고
ENVIRONMENT 상수를 development 로 설정하면 PHP 오류가 발생할 때마다 모든 오류가 브라우저에 출력됩니다. 반대로 상수를 production 으로 설정하면 모든 오류 출력이 비활성화됩니다. 운영 환경에서 오류 보고를 비활성화하는 것은 좋은 보안 관행 입니다.