2026.10.31 조회 17

우분투 환경변수 설정 처리 cli php-fpm 한곳에서 사용

광고

Ubuntu 서버에서 환경변수를 /etc/environment 한 곳에만 등록하고, PHP CLI와 PHP-FPM에서 모두 getenv()로 사용하는 방법을 정리합니다. 예시 변수명과 값은 모두 가상 데이터입니다.

핵심: 환경변수 값은 /etc/environment에서만 관리합니다. PHP-FPM에는 최초 한 번 파일 연결과 Worker 상속 설정이 필요합니다.

1. 왜 CLI와 PHP-FPM 설정이 다른가요?

SSH로 로그인해 실행하는 PHP CLI는 일반적으로 로그인 세션의 환경변수를 상속받습니다. 반면 PHP-FPM은 systemd 서비스로 실행되므로, 로그인 세션과 관계없이 환경변수를 별도로 전달해야 합니다. 또한 PHP-FPM은 기본적으로 Worker 환경을 비우도록 설정되어 있습니다.

구분 환경변수를 얻는 경로 필요한 작업
PHP CLI (SSH) 로그인 환경 파일 수정 후 재로그인
PHP-FPM systemd → PHP-FPM Worker EnvironmentFile + clear_env 설정

2. /etc/environment에 변수 등록

sudo nano /etc/environment

파일의 기존 설정은 유지하고 다음과 같은 예시를 추가합니다.

EXAMPLE_API_KEY="replace-with-your-key"
EXAMPLE_SERVICE_ID="replace-with-your-id"
EXAMPLE_OPTION="enabled"
  • export를 붙이지 않습니다.
  • 셸 스크립트가 아니므로 $(...) 실행이나 일반적인 셸 변수 확장을 기대하면 안 됩니다.
  • 이 글의 EXAMPLE_* 이름과 값은 실제 서비스와 무관한 예시입니다.
  • 설정값에 복잡한 인용부호나 역슬래시가 있다면 PAM과 systemd의 파싱 규칙 차이를 별도로 확인해야 합니다.

3. PHP CLI에서 확인

SSH 세션을 종료하고 다시 로그인한 다음 확인합니다. 기존 셸에는 변경 내용이 자동 반영되지 않습니다.

printenv EXAMPLE_API_KEY
php -r '$v = getenv("EXAMPLE_API_KEY"); echo ($v !== false && $v !== "") ? "OK\n" : "FAIL\n";'

특정 PHP 버전으로 확인하려면 설치된 명령어를 선택해 실행합니다.

php5.6 -r 'var_dump(getenv("EXAMPLE_API_KEY") !== false);'
php8.4 -r 'var_dump(getenv("EXAMPLE_API_KEY") !== false);'

주의: cron, systemd 타이머, 다른 서비스가 실행하는 CLI는 SSH 로그인 환경을 상속받지 않을 수 있습니다. 이 글의 CLI 절차는 일반적인 SSH 로그인 후 실행을 기준으로 합니다.

4. PHP-FPM 서비스에 파일 연결

먼저 서버에 설치된 PHP-FPM 서비스 이름을 확인합니다.

systemctl list-units --all --type=service 'php*-fpm.service'

예를 들어 PHP 8.4를 사용한다면 다음 명령어로 systemd override를 생성합니다.

sudo systemctl edit php8.4-fpm

편집기에 다음 두 줄을 추가합니다. 기존 서비스 파일을 직접 변경하지 않는 방식입니다.

[Service]
EnvironmentFile=/etc/environment

PHP 5.6도 사용 중이라면 sudo systemctl edit php5.6-fpm으로 같은 설정을 추가합니다. 실제 서비스명은 서버에 따라 다를 수 있습니다.

sudo systemctl cat php8.4-fpm

출력에 EnvironmentFile=/etc/environment가 포함되어 있으면 override 설정을 확인할 수 있습니다.

5. PHP-FPM Worker의 환경변수 상속 허용

서비스에 환경변수를 전달해도 PHP-FPM의 clear_env 기본 설정으로 인해 PHP Worker에서 보이지 않을 수 있습니다. 사용할 Pool의 설정 파일을 엽니다.

sudo nano /etc/php/8.4/fpm/pool.d/www.conf

해당 Pool에서 다음 설정을 적용합니다.

clear_env = no

PHP 5.6에서도 /etc/php/5.6/fpm/pool.d/www.conf 등 실제 Pool 파일에서 동일하게 설정합니다. Pool 이름이 www가 아니면 사용 중인 Pool 파일을 확인하세요.

보안: clear_env = no는 해당 Worker에 서비스 환경변수를 폭넓게 전달합니다. 여러 신뢰 수준의 애플리케이션이 한 PHP-FPM 서비스를 공유한다면 권장되지 않습니다. 필요한 변수만 env[EXAMPLE_API_KEY] = $EXAMPLE_API_KEY로 전달하는 방식도 검토하세요. 실제 변수 값을 또 다른 파일에 중복 작성할 필요는 없습니다.

6. 설정 검사와 서비스 재시작

PHP-FPM 버전에 맞게 설정 검사를 먼저 진행합니다.

sudo php-fpm8.4 -t

systemd override를 최초 등록하거나 변경했다면 다음 명령어를 실행합니다.

sudo systemctl daemon-reload

서비스를 재시작하여 새 환경변수를 읽습니다.

sudo systemctl restart php8.4-fpm
sudo systemctl status php8.4-fpm --no-pager

PHP 5.6 서비스를 사용한다면 위 명령어의 버전을 5.6으로 바꾸어 실행합니다. /etc/environment의 변수 값만 변경한 경우에는 daemon-reload 없이 PHP-FPM 재시작만 하면 됩니다.

7. PHP-FPM과 CLI에서 실제로 동작하는지 검증

다음 코드는 PHP 5.6과 PHP 8.4 양쪽에서 사용할 수 있습니다. CLI에서는 php로 실행하고, PHP-FPM은 인증된 관리자 경로에서 임시 PHP 검사 파일로 실행하여 결과를 비교합니다.

<?php
header('Content-Type: text/plain; charset=utf-8');

$keys = array(
    'EXAMPLE_API_KEY',
    'EXAMPLE_SERVICE_ID',
    'EXAMPLE_OPTION'
);

foreach ($keys as $key) {
    $value = getenv($key);
    echo $key . ': ' .
        ($value !== false && $value !== '' ? 'OK' : 'FAIL') .
        PHP_EOL;
}
EXAMPLE_API_KEY: OK
EXAMPLE_SERVICE_ID: OK
EXAMPLE_OPTION: OK

위 결과는 예시입니다. 웹에서 검사할 경우 파일을 외부에 공개하지 말고, 테스트가 끝나면 삭제해야 합니다. 실제 환경변수 값은 브라우저나 로그에 출력하지 않습니다.

8. 이후에는 /etc/environment만 수정

최초 설정이 완료되었다면 새로운 변수의 등록 위치는 계속 /etc/environment 하나입니다.

sudo nano /etc/environment
EXAMPLE_NEW_SETTING="replace-with-value"

변경한 값을 PHP-FPM에 반영하려면 해당 PHP-FPM 서비스를 다시 시작하고, SSH CLI에서는 새로 로그인합니다.

sudo systemctl restart php8.4-fpm
항목 최초 1회 변수 추가/수정
/etc/environment 변수 등록 이 파일만 수정
systemd override EnvironmentFile 연결 재설정 불필요
PHP-FPM Pool clear_env 설정 재설정 불필요
PHP-FPM 재시작 재시작
SSH CLI 재로그인 재로그인

9. 운영 시 주의사항

  • /etc/environment는 시스템 공통 설정으로, 비밀값 격리를 보장하지 않습니다. 모든 사용자에게 접근을 제한해야 하는 자격증명에는 별도 비밀 관리 방식을 고려하세요.
  • 파일 권한을 무조건 600으로 바꾸면 일부 PAM 로그인 환경에서 정상 로드되지 않을 수 있습니다.
  • 환경변수를 설정했다고 cron, systemd timer, PM2 등 별도 실행 주체에 자동 반영되는 것은 아닙니다.
  • 환경변수 값을 직접 출력하는 printenv 명령은 로그 기록·화면 공유 시 노출에 주의하세요.

정리

환경변수는 /etc/environment 한 곳에 등록하고, PHP-FPM의 systemd override 및 Worker 상속을 최초 설정하면 됩니다. 이후 값 변경 시에는 PHP-FPM 재시작과 SSH 재로그인만으로 새 설정을 사용할 수 있습니다. 단, 공통 환경변수 방식은 사이트별 비밀정보 접근 격리 수단은 아닙니다.

참고 문서

광고
RELATED POSTS

같이 보면 좋은 글

글 찾아보기
87개의 글
코딩
조회 18 · 2026.10.31
우분투 환경변수 설정 처리 cli php-fpm 한곳에서 사용

Ubuntu 서버에서 환경변수를 /etc/environment 한 곳에만 등록하고, PHP CLI와 PHP-FPM에서 모두 getenv()로 사용하는 방법을 정리합니다. 예시 변수명과 값은 모두 가상 데이터입니다. 핵심: 환경변수 값은 /et...

컴퓨터 트렌딩
조회 29 · 2026.10.30
3RSYS L420 LED BAR (블랙) 관심도 328.6% 상승, 최근 7일 지표 정리

3RSYS L420 LED BAR (블랙)의 2026.10.23과 2026.10.30 데이터를 비교했습니다. 이 글은 PC트렌딩에 저장된 가격과 내부 분석 지표의 변화만 정리하며, 실제 전체 시장 판매량이나 제품 성능을 뜻하지 않습니다....

컴퓨터 트렌딩
조회 52 · 2026.10.27
특가)키오시아 EXCERIA G3 M.2 NVMe (1TB) 관심도 92.3% 상승, 최근 7일 지표 정리

특가)키오시아 EXCERIA G3 M.2 NVMe (1TB)의 2026.10.20과 2026.10.27 데이터를 비교했습니다. 이 글은 PC트렌딩에 저장된 가격과 내부 분석 지표의 변화만 정리하며, 실제 전체 시장 판매량이나 제품 성능을 뜻...

컴퓨터 트렌딩
조회 69 · 2026.10.26
이엠텍 지포스 RTX 3050 MIRACLE WHITE D6 6GB 판매지표 88.5% 상승, 최근 흐름 체크

이엠텍 지포스 RTX 3050 MIRACLE WHITE D6 6GB의 2026.10.16과 2026.10.23 데이터를 비교했습니다. 이 글은 PC트렌딩에 저장된 가격과 내부 분석 지표의 변화만 정리하며, 실제 전체 시장 판매량이나 제품 성능을...

컴퓨터 트렌딩
조회 73 · 2026.10.25
이엠텍 지포스 RTX 3050 MIRACLE WHITE D6 6GB 관심도 72.7% 상승, 최근 7일 지표 정리

이엠텍 지포스 RTX 3050 MIRACLE WHITE D6 6GB의 2026.10.18과 2026.10.25 데이터를 비교했습니다. 이 글은 PC트렌딩에 저장된 가격과 내부 분석 지표의 변화만 정리하며, 실제 전체 시장 판매량이나 제품 성능을...

광고
컴퓨터 트렌딩
조회 69 · 2026.10.24
darkFlash DQX80 ARGB BTF (화이트) 관심도 64.7% 상승, 최근 7일 지표 정리

darkFlash DQX80 ARGB BTF (화이트)의 2026.10.17과 2026.10.24 데이터를 비교했습니다. 이 글은 PC트렌딩에 저장된 가격과 내부 분석 지표의 변화만 정리하며, 실제 전체 시장 판매량이나 제품 성능을 뜻하지 않...

컴퓨터 트렌딩
조회 113 · 2026.10.23
AGI DDR4-3200 CL22 UD138 (16GB) 관심도 136.0% 상승, 최근 7일 지표 정리

AGI DDR4-3200 CL22 UD138 (16GB)의 2026.10.16과 2026.10.23 데이터를 비교했습니다. 이 글은 PC트렌딩에 저장된 가격과 내부 분석 지표의 변화만 정리하며, 실제 전체 시장 판매량이나 제품 성능을 뜻하지 않습...

컴퓨터 트렌딩
조회 83 · 2026.10.22
특가)YMTC ZHITAI TiPlus7100s M.2 NVMe (1TB) 판매지표 79.2% 상승, 최근 흐름 체크

특가)YMTC ZHITAI TiPlus7100s M.2 NVMe (1TB)의 2026.10.15과 2026.10.22 데이터를 비교했습니다. 이 글은 PC트렌딩에 저장된 가격과 내부 분석 지표의 변화만 정리하며, 실제 전체 시장 판매량이나 제품 성능을...

컴퓨터 트렌딩
조회 91 · 2026.10.21
ASRock H610M-HDV/M.2+ D5 에즈윈 관심도 266.7% 상승, 최근 7일 지표 정리

ASRock H610M-HDV/M.2+ D5 에즈윈의 2026.10.13과 2026.10.20 데이터를 비교했습니다. 이 글은 PC트렌딩에 저장된 가격과 내부 분석 지표의 변화만 정리하며, 실제 전체 시장 판매량이나 제품 성능을 뜻하지 않습...

컴퓨터 트렌딩
조회 96 · 2026.10.20
ASUS DUAL 라데온 RX 9060 XT D6 16GB 대원씨티에스 판매지표 122.2% 상승, 최근 흐름 체크

ASUS DUAL 라데온 RX 9060 XT D6 16GB 대원씨티에스의 2026.10.13과 2026.10.20 데이터를 비교했습니다. 이 글은 PC트렌딩에 저장된 가격과 내부 분석 지표의 변화만 정리하며, 실제 전체 시장 판매량이나 제품 ...

광고
컴퓨터 트렌딩
조회 84 · 2026.10.19
darkFlash NEBULA DN-360 ARGB (블랙) 관심도 55.3% 상승, 최근 7일 지표 정리

darkFlash NEBULA DN-360 ARGB (블랙)의 2026.10.12과 2026.10.19 데이터를 비교했습니다. 이 글은 PC트렌딩에 저장된 가격과 내부 분석 지표의 변화만 정리하며, 실제 전체 시장 판매량이나 제품 성능을 뜻하지 ...

컴퓨터 트렌딩
조회 94 · 2026.10.19
Thermalright LEVITA VISION 360 ARGB (화이트) 판매지표 480.0% 상승, 최근 흐름 체크

Thermalright LEVITA VISION 360 ARGB (화이트)의 2026.10.11과 2026.10.18 데이터를 비교했습니다. 이 글은 PC트렌딩에 저장된 가격과 내부 분석 지표의 변화만 정리하며, 실제 전체 시장 판매량이나 제품 성능...

컴퓨터 트렌딩
조회 104 · 2026.10.18
ASUS PRIME 지포스 RTX 5070 WHITE OC D7 12GB 인텍앤컴퍼니 관심도 86.7% 상승, 최근 7일 지표 정리

ASUS PRIME 지포스 RTX 5070 WHITE OC D7 12GB 인텍앤컴퍼니의 2026.10.11과 2026.10.18 데이터를 비교했습니다. 이 글은 PC트렌딩에 저장된 가격과 내부 분석 지표의 변화만 정리하며, 실제 전체 시장 판매량이...

컴퓨터 트렌딩
조회 104 · 2026.10.18
리안리 UNI FAN SL-INF FLEX 120 (3팩) 관심도 106.3% 상승, 최근 7일 지표 정리

리안리 UNI FAN SL-INF FLEX 120 (3팩)의 2026.10.11과 2026.10.18 데이터를 비교했습니다. 이 글은 PC트렌딩에 저장된 가격과 내부 분석 지표의 변화만 정리하며, 실제 전체 시장 판매량이나 제품 성능을 뜻하지...

축제
조회 125 · 2026.10.17
이번 주말 부산 축제 9곳, 일정 확인

부산에서 확인할 수 있는 축제 일정을 리컴에리어 원본 데이터 기준으로 정리했습니다. 기준 기간은 2026년 10월 17일~10월 18일입니다. 실제 일정과 운영 정보는 변경될 수 있으므로 방문 전에 상세 페이지에서 ...