.env
파일 형식을 지원하여 설정을 파일로 분리하여 관리하기 용이합니다.- 여러 설정을 그룹화하고 주석을 추가하여 코드의 가독성을 향상시킬 수 있습니다.
.env
파일을 수정하여 환경 변수를 변경하면 코드를 수정할 필요가 없습니다.- 환경 변수에 대한 보안을 강화할 수 있습니다.
- 추가적인 라이브러리를 사용해야 하므로 프로젝트의 의존성이 늘어납니다.
- 환경 변수의 변경이나 추가가 있을 때
.env
파일을 수정해야 하므로, 프로젝트 관리에 조금 더 신경을 써야 합니다.
이제 dotenv
를 사용하여 데이터베이스 연결 정보를 제공해보도록 하겠습니다!
dotenv
라이브러리를 설치합니다. Composer를 사용하여 설치할 수 있습니다.composer require vlucas/phpdotenv
.env
파일을 생성하고 다음과 같이 연결 정보를 설정합니다.DB_HOST=localhost
DB_USERNAME=root
DB_PASSWORD=1234
DB_NAME=test
DB_PORT=3306
dotenv
를 사용하여 환경 변수를 로드하고 연결 정보를 가져옵니다.<?php
require_once __DIR__ . '/vendor/autoload.php'; // Composer autoload
$dotenv = Dotenv\Dotenv::createImmutable(__DIR__);
$dotenv->load();
$servername = $_ENV['DB_HOST'];
$name = $_ENV['DB_USERNAME'];
$password = $_ENV['DB_PASSWORD'];
$dbname = $_ENV['DB_NAME'];
$port = $_ENV['DB_PORT'];
$conn = new mysqli($servername, $name, $password, $dbname, $port);
if ($conn->connect_error) {
die("데이터베이스 연결 실패: " . $conn->connect_error);
}
?>
이제 .env
파일에 설정된 값들이 환경 변수로 설정되어 PHP 코드에서 사용할 수 있습니다.
- PHP에 내장되어 있어 추가적인 라이브러리나 의존성이 필요하지 않습니다.
- 간단한 환경 변수를 다룰 때에는
getenv()
와putenv()
만으로 충분합니다.
- 복잡한 설정이나 다수의 변수를 다룰 때에는 코드가 복잡해질 수 있습니다.
.env
파일 형식을 직접 지원하지 않아서, 따로 처리해주어야 합니다.- 가독성과 유지보수성이 낮을 수 있습니다.
.env
파일DB_HOST=localhost
DB_USERNAME=root
DB_PASSWORD=1234
DB_NAME=test
DB_PORT=3306
<?php
$servername = getenv('DB_HOST');
$name = getenv('DB_USERNAME');
$password = getenv('DB_PASSWORD');
$dbname = getenv('DB_NAME');
$port = getenv('DB_PORT');
$conn = new mysqli($servername, $name, $password, $dbname, $port);
if ($conn->connect_error) {
die("데이터베이스 연결 실패: " . $conn->connect_error);
}
?>
이렇게 하면 .env
파일에서 설정한 변수들이 getenv()
함수를 통해 PHP 코드에서 사용됩니다!
putenv()
함수는 PHP에서 환경 변수를 설정하는 데 사용되는 함수입니다. 이 함수를 사용하면 코드에서 직접적으로 환경 변수를 설정할 수 있습니다. putenv()
함수를 사용하면 getenv()
함수를 통해 설정한 환경 변수를 읽어올 수 있습니다.
putenv()
함수의 기본 구문은 아래와 같습니다!
putenv("변수명=값");
여기서 "변수명"은 환경 변수의 이름이고, "값"은 그에 대응하는 값입니다.
putenv("DB_HOST=localhost");
putenv("DB_USERNAME=root");
putenv("DB_PASSWORD=1234");
putenv("DB_NAME=test");
putenv("DB_PORT=3306");
이후에는 getenv()
함수를 사용하여 이러한 환경 변수를 읽어올 수 있습니다.
$servername = getenv('DB_HOST');
$name = getenv('DB_USERNAME');
$password = getenv('DB_PASSWORD');
$dbname = getenv('DB_NAME');
$port = getenv('DB_PORT');