새소식

PHP/PHP

PHP - 내장 함수만으로 .env 파일 사용하기

  • -

개요

다른 라이브러리를 사용하지 않고 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;
}

사용 예시

<?

loadEnv();

// 환경 변수 가져오기
$db_host = getenv('DB_HOST');
$db_user = getenv('DB_USER');
$db_pass = getenv('DB_PASS');

echo "DB Host: $db_host, User: $db_user, Password: $db_pass";

후기

사랑해 php야 망하지만 말아줘...

반응형
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.