다른 라이브러리를 사용하지 않고 php 내장 함수만으로 .env 파일을 사용하는 방법에 관한 포스팅이다.
코드
loadEnv 함수
<?
<?php
/**
* 환경 변수(.env) 파일을 로드하여 PHP의 환경 변수로 설정하는 함수
*
* @throws Exception .env 파일이 존재하지 않거나 읽을 수 없을 경우 예외를 발생
* @return bool 환경 변수 로드가 성공하면 true를 반환
*/
function loadEnv() {
// 루트 디렉토리에 있는 .env 파일 사용(환경에 따라 수정)
$filePath = '/.env';
// 파일이 존재하지 않으면 예외 처리
if (!file_exists($filePath)) {
throw new Exception("환경 변수 파일을 찾을 수 없습니다: $filePath");
}
// .env 파일을 한 번만 로드하도록 캐싱
static $loaded = false;
if ($loaded) return true;
// 파일 읽기
$lines = file($filePath, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
foreach ($lines as $line) {
$line = trim($line);
// 주석(#) 또는 빈 줄은 무시
if ($line === '' || strpos($line, '#') === 0) continue;
// '='가 없는 경우 예외 처리
if (!strpos($line, '=')) continue;
list($key, $value) = explode('=', $line, 2);
$key = trim($key);
$value = trim($value);
// 환경 변수 설정 (중복 방지)
if (!array_key_exists($key, $_ENV) && !array_key_exists($key, $_SERVER)) {
putenv("$key=$value");
$_ENV[$key] = $value;
$_SERVER[$key] = $value;
}
}
$loaded = true;
return true;
}