설정 가이드 · 2 min read · Dec 16, 2025

suPHP를 PHP4 및 PHP5로 설정하는 방법 - 2페이지

4 PHP4-CGI 설치

먼저 suPHP를 PHP4와 함께 사용하는 방법을 설명한 다음, 이 튜토리얼에서 PHP5와 함께 사용하는 방법을 설명하고, 마지막으로 두 가지를 동시에 설치하는 방법을 설명하겠습니다.

앞서 언급했듯이, suPHP는 Apache 모듈 대신 CGI로 PHP가 필요합니다. 따라서 다음과 같이 php4-cgi 패키지를 설치합니다:

apt-get install php4-cgi

5 suPHP 설치

다음으로 suPHP 소스를 다운로드하고 압축을 풉니다. 이 글을 작성할 당시 현재 버전은 0.6.1이었습니다:

cd /tmp  
wget http://www.suphp.org/download/suphp-0.6.1.tar.gz  
tar xvfz suphp-0.6.1.tar.gz  
cd suphp-0.6.1

이제 src/apache2/mod_suphp.c를 수정해야 합니다. 그렇지 않으면 다음과 같은 오류가 발생합니다:

| 웹 서버를 강제로 다시 로드합니다: Apache2Syntax error on line 49 of /etc/apache2/sites-enabled/000-default: suPHP_AddHandler not allowed here |

Apache vhosts에 suPHP 지시어를 넣을 때 발생합니다. 파일을 열고 316 및 317행(다른 suPHP 버전을 사용하는 경우 행 번호가 다를 수 있음)에서 ACCESS_CONF 문자열을 찾습니다. 이를 RSRC_CONF | ACCESS_CONF로 바꿔서 두 줄이 다음과 같이 보이도록 합니다:

vi src/apache2/mod_suphp.c

| AP_INIT_ITERATE("suPHP_AddHandler", suphp_handle_cmd_add_handler, NULL, RSRC_CONF | ACCESS_CONF, "mod_suphp가 이러한 MIME 유형을 처리하도록 지시합니다"), AP_INIT_ITERATE("suPHP_RemoveHandler", suphp_handle_cmd_remove_handler, NULL, RSRC_CONF | ACCESS_CONF, "mod_suphp가 이러한 MIME 유형을 처리하지 않도록 지시합니다"), |

(Windows 시스템에서 파일을 편집하려면, 파일을 Linux 시스템으로 다시 전송하기 전에 Unix 줄 바꿈으로 저장해야 합니다!)

그런 다음 suPHP를 컴파일하고 설치합니다:

./configure --prefix=/usr --sysconfdir=/etc --with-apache-user=www-data --with-setid-mode=paranoid --with-apxs=/usr/bin/apxs2  
make  
make install

이제 /etc/suphp.conf 구성 파일을 생성해야 합니다. 소스와 함께 제공되는 템플릿을 복사하여 간단히 할 수 있습니다:

cp /tmp/suphp-0.6.1/doc/suphp.conf-example /etc/suphp.conf

/etc/suphp.conf에 몇 가지 변경을 해야 합니다. webserver_user의 값을 www-data로 설정하고(x-httpd-php의 경우 /usr/bin/php4-cgi로 지정해야 하므로 최종 파일은 다음과 같습니다):

vi /etc/suphp.conf

| [global] ;로그 파일 경로 logfile=/var/log/suphp.log ;로그 레벨 loglevel=info ;Apache가 실행되는 사용자 webserver_user=www-data ;모든 스크립트가 있어야 하는 경로 docroot=/ ;스크립트를 실행하기 전에 chroot()할 경로 ;chroot=/mychroot ; 보안 옵션 allow_file_group_writeable=false allow_file_others_writeable=false allow_directory_group_writeable=false allow_directory_others_writeable=false ;스크립트가 DOCUMENT_ROOT 내에 있는지 확인 check_vhost_docroot=true ;브라우저에 경미한 오류 메시지 전송 errors_to_browser=false ;PATH 환경 변수 env_path=/bin:/usr/bin ;설정할 umask, 8진수 표기법으로 지정 umask=0077 ; 최소 UID min_uid=100 ; 최소 GID min_gid=100 [handlers] ;php 스크립트용 핸들러 x-httpd-php=php:/usr/bin/php4-cgi ;CGI 스크립트용 핸들러 x-suphp-cgi=execute:!self |

그런 다음 Apache 구성에 suPHP 모듈을 추가해야 합니다. /etc/apache2/httpd.conf에 다음 줄을 추가합니다:

vi /etc/apache2/httpd.conf

| LoadModule suphp_module /usr/lib/apache2/modules/mod_suphp.so |

그런 다음 Apache를 재시작합니다:

/etc/init.d/apache2 restart

6 Apache 구성

이 장에서는 www.example.com이라는 웹사이트가 IP 주소 1.2.3.4에 있고 문서 루트가 /var/www이며 다음과 같은 vhost 구성이 있다고 가정합니다:

| ServerName www.example.com ServerAdmin [email protected] DocumentRoot /var/www |

www.example.com vhost에 suPHP를 활성화하고 testuser 사용자 및 test 그룹으로 PHP 스크립트를 실행하도록 하려면 vhost를 다음과 같이 수정합니다:

| ServerName www.example.com ServerAdmin [email protected] DocumentRoot /var/www suPHP_Engine on suPHP_UserGroup testuser test AddHandler x-httpd-php .php .php3 .php4 .php5 suPHP_AddHandler x-httpd-php |

AddHandler x-httpd-php는 suPHP_AddHandler x-httpd-php를 참조하며, 이는 /etc/suphp.conf의 x-httpd-php 줄을 참조하여 .php, .php3, .php4 및 .php5 확장자를 가진 스크립트가 /usr/bin/php4-cgi에 의해 해석됨을 의미합니다.

Apache를 재시작합니다:

/etc/init.d/apache2 restart

이제 간단한 phpinfo() 스크립트를 만들고 브라우저에서 액세스합니다:

vi /var/www/info.php

| |

브라우저에서 http://www.example.com/info.php로 이동하면 PHP4가 실행되고 있는 것을 확인할 수 있습니다:

문제가 발생하면 /var/log/suphp.log 및 /var/log/apache2/error.log에서 오류를 확인하십시오. 대부분의 경우 /etc/suphp.conf에서 적절한 옵션을 변경하거나 파일/디렉토리의 권한을 변경하여 문제를 해결할 수 있습니다.

Share: X/Twitter LinkedIn

새 게시물을 받은 편지함에서 받기

스팸은 없습니다. 언제든지 구독 해지 가능합니다.