환경 변수 관리 (.env) 분리
데이터베이스 비밀번호, 외부 API 키 등 소스 코드에 절대 포함되어서는 안 되는 민감한 정보들을 별도의 .env 파일로 안전하게 분리하는 방법을 배웁니다. 보안의 가장 기초적이고 핵심적인 과정입니다.
1. 패키지 설치 (vlucas/phpdotenv)
PHP 생태계에서 환경 변수 관리를 위해 가장 널리 쓰이는 표준 패키지인 vlucas/phpdotenv를 설치합니다.
$ composer require vlucas/phpdotenv
🚨 매우 중요: .gitignore 설정
.env 파일은 절대로 Git(GitHub 등)에 커밋되어서는 안 됩니다. 소스 코드를 공유할 때는 항상 .gitignore 파일에 .env를 명시하여 실수로 업로드되는 대참사를 막아야 합니다.
2. .env 파일 및 적용 방법
루트 디렉토리에 .env 파일을 생성하고 민감한 데이터를 작성합니다. 이후 PHP 코드 상단에서 Dotenv를 초기화하면, 글로벌 변수 $_ENV를 통해 어디서든 안전하게 접근할 수 있습니다.
DB_HOST=127.0.0.1
DB_PORT=3306
DB_NAME=minstudio_db
DB_USER=root
DB_PASS=super_secret_password
API_KEY=sk_live_123456789
<?php
require __DIR__ . '/vendor/autoload.php';
// Dotenv 라이브러리를 통해 현재 디렉토리의 .env 파일을 불러옴
$dotenv = Dotenv\Dotenv::createImmutable(__DIR__);
$dotenv->load();
// 하드코딩 없이 안전하게 환경 변수 접근
$db_host = $_ENV['DB_HOST'];
$db_user = $_ENV['DB_USER'];
$api_key = $_ENV['API_KEY'];
echo "DB Host: " . $db_host . "\n";
echo "DB User: " . $db_user . "\n";
echo "API Key Length: " . strlen($api_key) . " bytes\n";
echo "보안 설정 로드 완료!";
?>
$ php index.php
DB Host: 127.0.0.1
DB User: root
API Key Length: 17 bytes
보안 설정 로드 완료!