PHP FastCGI 테스트와 사이트별 php.ini 구성

개요
이 가이드는 로컬 또는 서버에서 PHP-FastCGI 환경을 구성한 뒤, 사이트별로 서로 다른 php.ini를 적용하고 개별 설정을 변경해 테스트하는 절차를 다룹니다. 예제 명령과 파일 경로는 원문에 맞춰 유지합니다.
Important: 실제 운영 서버에서는 변경 후 Apache 재시작 및 권한 확인을 잊지 마세요.
테스트 준비 — 간단한 PHP 파일 생성
이제 작은 PHP 테스트 파일을 각 웹 사이트 루트에 만들고 웹 브라우저에서 호출해 동작을 확인합니다. 예를 들어 www.example1.com 사이트에서 다음 파일을 만듭니다.
vi /srv/www/web1/web/info.php
코드 내용:
브라우저에서 http://www.example1.com/info.php 를 호출하십시오. 모든 것이 정상이라면 출력 상단의 Server API 라인에 CGI/FastCGI가 표시됩니다.
사이트별 맞춤 php.ini 적용 방법
각 웹 사이트는 자체 php-fcgi-starter 래퍼 스크립트를 갖습니다. 따라서 사이트마다 다른 php.ini를 적용할 수 있습니다. 예제로 기본 php.ini를 /srv/www/web2/ 디렉터리로 복사하고 소유자를 변경해 www.example2.com에 적용해 보겠습니다.
cp /etc/php5/fastcgi/php.ini /srv/www/web2/
chown web2:web2 /srv/www/web2/php.ini
(이제 /srv/www/web2/php.ini 파일을 원하는 값으로 수정할 수 있습니다.)
다음으로 웹2의 php-fcgi-starter 스크립트를 엽니다:
vi /srv/www/php-fcgi-scripts/web2/php-fcgi-starter
PHPRC 라인에 /srv/www/web2/ 를 넣습니다:
#!/bin/sh
PHPRC=/srv/www/web2/
export PHPRC
export PHP_FCGI_MAX_REQUESTS=5000
export PHP_FCGI_CHILDREN=8
exec /usr/bin/php-cgi
변경 후 Apache를 재시작합니다:
/etc/init.d/apache2 restart
www.example2.com용 phpinfo 파일을 새로 만듭니다:
vi /srv/www/web2/web/info.php
브라우저에서 http://www.example2.com/info.php 를 호출하면 Loaded Configuration File 라인에 /srv/www/web2/php.ini 가 표시되어야 합니다.
Notes: 파일 권한과 소유자가 올바른지 확인하세요. 웹 서버 계정이 파일을 읽을 수 있어야 합니다.
단일 PHP 설정 항목만 변경하기
전체 php.ini 파일을 교체하지 않고, php-fcgi-starter 스크립트에서 PHP 실행 시 -d 스위치를 사용해 단일 설정 항목을 덮어쓸 수 있습니다. 예로 www.example2.com에서 magic_quotes_gpc를 끌 경우 방법은 다음과 같습니다.
vi /srv/www/php-fcgi-scripts/web2/php-fcgi-starter
내용 예시:
#!/bin/sh
PHPRC=/etc/php5/fastcgi/
export PHPRC
export PHP_FCGI_MAX_REQUESTS=5000
export PHP_FCGI_CHILDREN=8
exec /usr/bin/php-cgi -d magic_quotes_gpc=off
변경 후 Apache를 재시작하십시오:
/etc/init.d/apache2 restart
브라우저에서 info.php 를 다시 호출하고 magic_quotes_gpc 항목을 검색하면 Off로 표시됩니다.
Important: -d 스위치로 설정한 값은 해당 php-cgi 프로세스에만 적용됩니다. 여러 스크립트에 공통 적용하려면 php.ini로 관리하는 편이 낫습니다.
점검 및 테스트 체크리스트
- phpinfo() 출력에서 Server API가 CGI/FastCGI인지 확인
- Loaded Configuration File 경로가 기대한 php.ini를 가리키는지 확인
- 파일 권한과 소유자(user:group)가 올바른지 확인
- Apache 재시작 후 변경사항 반영 확인
- -d로 덮어쓴 설정은 프로세스별 영향 범위를 이해했는지 확인
간단한 방법론(작업 순서 요약)
- 테스트용 info.php 파일 생성
- 사이트별 php.ini 필요 시 복사 및 권한 설정
- php-fcgi-starter에 PHPRC(또는 -d) 설정 추가
- Apache 재시작
- phpinfo()로 최종 확인
수용 기준(테스트 케이스)
- Server API가 CGI/FastCGI로 출력되어야 한다.
- 사이트별 php.ini를 지정했을 때 phpinfo의 Loaded Configuration File이 해당 경로를 가리켜야 한다.
- -d로 설정한 개별 항목은 phpinfo에 반영되어야 한다.
간단 용어집
- PHPRC: PHP 실행 시 참조할 php.ini 디렉터리 경로를 지정하는 환경 변수.
- php-fcgi-starter: 각 사이트별로 php-cgi를 실행하기 위한 래퍼 쉘 스크립트.
- -d: PHP 실행 시 개별 설정을 지정하는 CLI 스위치.
보안 및 운영 팁
- 사이트별로 다른 php.ini를 둘 때, 민감한 설정(예: expose_php, display_errors)은 운영 기준에 맞춰 일관되게 관리하세요.
- 테스트는 별도 스테이징에서 먼저 수행하고, 운영 반영 전 롤백 계획을 준비하세요.
링크
- mod_fcgid: http://fastcgi.coremail.cn/
- Apache: http://httpd.apache.org/
- PHP: http://www.php.net/
- OpenSUSE: http://www.opensuse.org/
요약
- phpinfo()로 FastCGI 동작을 먼저 확인합니다.
- 사이트별 php.ini는 PHPRC로 지정합니다.
- 개별 설정은 -d 스위치로 덮어쓸 수 있습니다.
- 변경 후 Apache 재시작과 권한 점검을 잊지 마세요.