Skip to content
TUWLAB.com
모든 게시물에 대하여 '링크'
방식의 퍼가기만 허용합니다.
한양대학교 전자통신컴퓨터공학부
바라미
  • 249
  • 2589481
DNS Powered by DNSEver.com
Apache

Apache에서 디렉토리별 php.ini 다르게 적용하기 (php_value, php_flag)

Posted 2012. 12. 16 Updated 2014. 04. 23 Views 14487 Replies 0

하나의 서버에서 같이 운영하고 있는 사이트별로 PHP 옵션을 다르게 적용해야 하는 경우가있습니다.

예를 들어, 동일 서버를 블로그 및 웹 개발 용도로 함께 사용한다면, php.ini의 Error-handling 관련 옵션을 서로 다르게 적용해야 합니다.

즉, 개발용 디렉토리에서는 PHP관련 모든 오류메시지가 표시되게 하는 반면, 블로그 디렉토리에서는 보안상 오류 메시지를 출력하지 않도록 설정해야 합니다.


별도의 php.ini를 만들어서 디렉토리별로 서로 다른 환경설정 파일을 적용하면 좋겠지만, 아쉽게도 이렇게 하기 위해서는 정식판 PHP가 아닌 suPHP과 같은 다른 PHP 패키지를 사용해야 합니다.

단, PHPINIDir이라는 지시자를 활용하여 가상 호스트(Virtual Host)별로 php.ini 파일을 다르게 적용할 수 있습니다. 다음과 같이 작성하고 서버를 재시작하면 해당 가상 호스트는 /etc/php/my_config/php.ini 파일의 설정대로 동작합니다.

<VirtualHost xxx.xxx.xxx.xxx:80>
         ...
         PHPINIDir /etc/php/my_config
         ...
 </VirtualHost>

하지만, 이 방법의 경우 하나의 IP와 HTTP 포트를 이용하여 서버를 운영하는 경우 사용할 수 없다는 문제가 있습니다. (PHPINIDir 옵션은 Directory 지시자 안에 들어갈 수 없습니다.)

Apache에서 httpd.conf의 <Directory> 구문과 각 디렉토리의 .htaccess 파일을 이용하여 디렉토리별로 옵션을 다르게 설정할 수 있듯이, PHP의 환경설정 내용도 디렉토리별로 다르게 지정할 수 있습니다.

핵심은, php_valuephp_flag 지시자를 활용하는 것입니다.

/var/www/develop 디렉토리의 PHP Error-handling 옵션을 변경하는 경우를 예로 들어 설명하도록 하겠습니다.

 

방법1: Directory 지시자를 활용한 설정

/etc/apache2/sites-available 디렉토리에 있는 사이트 설정파일 내에 디렉토리별로 옵션을 지정할 수 있습니다. 이 설정은 <Directory> 지시자 안에 입력합니다.

사이트 설정 파일 내에 다음과 같이 입력하고 서버를 재시작하면 /var/www/develop 디렉토리에서는 Error-Report 기능이 활성화됩니다.

...
 <Directory /var/www/develop />
         ...
         php_value error_reporting 32767
         php_flag display_errors on
         php_flag display_startup_errors on
         php_flag track_errors on
         php_flag html_errors on
         ...
 </Directory>
 ...

여기에 입력하는 형식은 다음과 같습니다.

php_value [환경변수명] [설정값]
php_flag [환경변수명] [on|off]

주의사항이 있는데, php_value와 php_flag를 잘 구분해서 사용해야 한다는 점입니다.

php_flag는 on/off와 같이 Boolean값을 갖는 환경변수명을 처리하며, php_value는 숫자와 문자와 같은 값을 처리합니다.

php_value의 경우, php.ini에 등장하는 SYMBOL을 지정해서는 안 됩니다.

php.ini에서는 error_reporting 환경변수는 편의상 E_ALL이나 E_NOTICE와 같은 SYMBOL을 사용할 수 있는데, 이러한 SYMBOL들은 고유한 숫자값과 대응됩니다.

<Directory> 지시자 안에서는 반드시 이 SYMBOL들을 대응하는 숫자값으로 바꿔서 입력을 해 줘야 합니다. 위 예시에 나온 32767 숫자는 E_ALL|E_STRICT를 의미합니다.

각 SYMBOL이 의미하는 숫자를 잘 모를때는 구글링을 해도 되지만, 다음과 같이 간단히 php 파일을 만들어서 알아볼 수 있습니다.

<?
         echo(E_ALL|E_STRICT);
 ?>

이렇게 쓰고 브라우저에서 열어보면 32767이라는 숫자가 나타날 것입니다.


방법2: .htaccess 를 활용하는 방법

/var/www/develop/.htaccess 파일에 다음 구문을 삽입하여 옵션을 지정할 수도 있습니다. 단, <Directory> 지시자 내에서 AllowOverride 가 가능하도록 설정(All)되어 있어야 합니다.

...
 php_value error_reporting 32767
 php_flag display_errors on
 php_flag display_startup_errors on
 php_flag track_errors on
 php_flag html_errors on
 ...


서비스 선택
이용중인 SNS 버튼을 클릭하여 로그인 해주세요.
SNS 계정을 통해 로그인하면 회원가입 없이 댓글을 남길 수 있습니다.
댓글
?
Powered by SocialXE

List of Articles
번호 분류 제목 글쓴이 최근 수정일 조회 수
81 Linux Linux 루트 디렉토리 구성 TUW 2018.01.04 17461
80 일반 [WSL] Windows Subsystem for Linux - SSH 서버 자동 시작 설정하기 file TUW 2021.12.28 17590
79 Android 안드로이드 Hello, World?! file TUW 2017.06.02 17619
78 Apache Apache2 서버에 SSL/HTTPS 설치하기 (StartSSL) - 1 file TUW 2017.06.02 17815
77 Linux [vsFTP] 생성 파일 기본 권한 설정하기 file TUW 2017.06.02 17854
76 OrCAD [OrCAD Capture] 회로도 PDF로 출력하기 - PDF Export 활용 file TUW 2021.12.28 18004
75 Android 안드로이드 개발 관련 참조사이트 TUW 2014.04.20 18039
74 일반 메모리 계층구조 (Memory Hierarchy) file TUW 2017.06.02 18361
73 Apache [Apache] .htaccess를 활용한 이미지 외부링크 방지하기 2 file TUW 2017.06.02 18580
72 AVR [AVR 강의] AVR 강의자료 - 2. 기본 입출력 file TUW 2021.12.28 18811
71 Linux iptables 명령을 이용하여 특정 IP대역 접속 차단하기 TUW 2014.11.17 19038
70 Linux fstab과 sshfs fuse를 활용한 원격 디렉토리 자동 마운트하기 TUW 2022.04.28 19886
69 Apache Apache 일별 로그파일 생성하기, 필터링 로깅하기 TUW 2014.04.23 19977
68 Android 안드로이드 가상머신을 활용하여 PC에서 카카오톡 사용하기 file TUW 2017.06.02 20171
67 Apache Apache2 서버에 SSL/HTTPS 설치하기 (StartSSL) - 2 file TUW 2017.06.02 20552
66 Android 안드로이드 AVD에 한글 키보드 설치하기 file TUW 2017.06.02 20715
목록
Board Pagination Prev 1 ... 5 6 7 8 9 10 11 ... 13 Next
/ 13

Powered by Xpress Engine / Designed by Sketchbook

sketchbook5, 스케치북5

sketchbook5, 스케치북5