PHP3 설치 설명서 ================ 이 설명은 Apache 1.3.0에서 MySQL을 지원하는 static Apache module로 설치하는 간략한 과정이다. 자세한 설치 내용은 아래의 '자세한 설명'을 보자. shared module(DSO)로 설치하는 것에 대한 설명은 'INSTALL.DSO' 파일에 있다. 간략한 설치 ----------- gunzip apache_1.3.x.tar.gz tar xvf apache_1.3.x.tar gunzip php-3.0.x.tar.gz tar xvf php-3.0.x.tar cd apache_1.3.x ./configure --prefix=/www cd ../php-3.0.x ./configure --with-mysql --with-apache=../apache_1.3.x --enable-track-vars make make install cd ../apache_1.3.x ./configure --prefix=/www --activate-module=src/modules/php3/libphp3.a (위의 명령은 맞는 명령이다. 물론 libphp3.a가 현재는 없지만 생성될 것이다.) make (이제 Apache bin 디렉토리에 복사할 httpd 실행 파일이 생길 것이다.) cd ../php-3.0.x cp php3.ini-dist /usr/local/lib/php3.ini 이제 PHP 옵션을 고치기 위해 /usr/local/lib/php3.ini를 편집하면 된다. httpd.conf나 srm.conf파일에 다음과 같은 라인을 넣어준다: AddType application/x-httpd-php3 .php3 일반적인 문제 해결 - PHP를 새로운 옵션으로 재 설정하기전에 'config.cache' 파일은 지워주는 것이 좋다. 특히 FreeType TTF library 설정같은 것에서는 매우 중요하다. - PHP가 라이브러리를 인식하지 못한다면, 우선 configure.in파일을 살펴보자. 이 파일에서 PHP가 어디에서 라이브러리들을 찾는가를 알아볼 수 있을 것이다. 이 파일안에 있는 $withVAR 변수는 --with-WHATEVER 옵션을 사용하여 설정한다. 예를들어, PHP가 /my/path에 설치된 gd를 인식하게 하고 싶다면, --with-gd=/my/path 같은 옵션을 주게되고, 이를 configure.in 파일에서 확인하면 /my/path/lib/libgd.a와 /my/path/include/gd.h를 찾는 것을 볼 수 있다. - Apache를 컴파일하는동안 다음과 비슷한 에러가 나타난다면 : > ./gen_test_char: error in loading shared libraries > libmysqlclient.so: cannot open shared object file: No such file or directory 혹은 다른 .so 파일에 대해 나타날수도 있다. 리눅스에서 /etc/ld.so.conf 파일을 수정하여 해당 .so 파일이 있는 디렉토리를 추가한다. 위의 mysql의 경우 /usr/local/lib/mysql을 추가하는 식이다. 그후에 'ldconfig'를 실행하고, Apache 디렉토리로 돌아가 'make clean'을 실행한 후에, 재 컴파일한다. 리눅스가 아닌 경우 이런 메세지를 만났다면, 여러분의 link path에 필요한 shared lib의 symbolic link를 만들어서 해결할 수 있다. 예를 들어 다음과 같은 식이다. : 'ln -s /usr/local/lib/mysql/libmysqlclient.so /usr/lib' - 만약 PHP를 오라클 지원으로 컴파일 할 때 unresolved reference에 관련된 에러가 나온다면, (Apache's configure나 src/Configure 스크립트를 사용해 만든)Apache Makefile의 LIBS 줄에 지정된 라이브러리들 중에 문제가 있을 확률이 높다. 라이브러리들과 이들의 상호 연관성이 플랫폼이나 버젼에 따라 수시로 바뀌기 때문이다. PHP는 적당한 값을 찾아내기 위해 노력하지만 언제나 제대로 찾을 수 있는 것은 아니다. 다음과 같은 설정이 Oracle-Linux에 맞는 lib들의 조합이라고 알려져 있다. -L$ORACLE_HOME/lib -lclntsh -lpsa -lcore4 -lnlsrtl3 -lclntsh -lm 자세한 설치 ----------- PHP3의 설치는 다음 4단계로 간단히 끝낼 수 있다. : 1. 배포판 파일 풀기. 보통 다운 받은 파일의 이름은 php3xn.tar.gz과 비슷하다. 이 파일을 다음과 같은 명령으로 압축을 푼다. : gunzip php3xn.tar.gz 압축을 푼 다음 다음의 명령으로 tar를 푼다. : tar -xvf php3xn.tar 위의 명령으로 php-3.0.x 디렉토리가 생겼을 것이다. 이 디렉토리로 cd 한다. 2. PHP3 설정. 이제 원하는 옵션을 선택할 차례이다. 옵션에 대한 자세한 list를 보려면 ./configure --help 라고 친다. 또한 같이 제공된 'setup' 스크립트를 사용할 수도 있다. 이 스크립트는 여러분에게 일련의 질문을 하고, 이를 바탕으로 configure 스크립트를 자동으로 실행하여 원하는 설정을 할 수 있게 해 준다. 보통 사용자가 설정하는 옵션은 "--enable 과 --with 로 사작하는 옵션들"이다. 가장 많이 사용되는 옵션으로 PHP를 Apache module로 만드는 옵션이다. 이를 위해 사용자는 Apache 서버의 소스 코드가 어느 디렉토리에 있는가를 알아야 한다. 이 옵션은 --with-apache=/usr/local/src/apache과 같이 사용되는데, 이 경우 Apache 소스는 해당 디렉토리에 있어야 한다. 단순히 --with-apache와 같이 옵션을 주면 /usr/local/etc/httpd 디렉토리가 디폴트값으로 설정된다. NOTE: 지정해 주는 디렉토리는 풀어놓은 Apache 배포본의 top-level이다. configure 프로그램은 설치해 놓은 Apache의 버젼에 따라 다른 디렉토리에 있는 httpd.h를 자동으로 찾는다. MySQL을 지원하려면, 새 버젼의 MySQL는 해당 파일들을 /usr/local 밑에 설치되기 때문에, 이 디렉토리가 디폴트가 된다. 이 디렉토리는 --with-mysql=/opt/local같이 다른 디렉토리로 설정할 수 있다. 그렇지 않다면 단지 --with-mysql같이 해주면 된다. *NOTE* 만약 여러분이 Apache 1.3b6나 그 이상의 버젼을 사용하고 있다면 PHP를 컴파일 하기 전에 Apache Configure를 최소한 한번 이상 실행해야 한다. 이 때는 Apache의 설정이 어떻게 되어 있는가는 상관 없다. 3. 해당 파일의 컴파일과 설치. 간단히 make install 하면된다. Apache 1.3.x 버젼의 모듈로 PHP를 사용한다면 위의 명령은 필요한 파일들을 아파치 배포본 소스 디렉토리 밑의 src/modules/php3 디렉토리로 복사한다. 만약 Apache 1.2.x를 사용한다면 해당 파일들은 main 소스 디렉토리로 바로 복사된다. Apache 1.3b6 이나 그 이상은, 새로운 APACI 설정 메카니즘을 사용할 수 있다. PHP를 지원하는 Apache를 자동으로 만들려면 다음과 같이 한다. : cd apache_1.3.x ./configure --prefix=//apache \ --activate-module=src/modules/php3/libphp3.a make make install 만약 이 새로운 설정 툴을 사용하고 싶지 않다면, 기존의 방법(src/Configure)을 그대로 사용해도 좋다. 기존의 ./Configure 스크립트를 사용한다면, 반드시 src/Configuration 파일을 손수 수정해야 한다. 만약 이 파일이 없다면 Configuration.tmpl 파일을 Configuration으로 복사햐 사용한다. Apache 1.3.x는 다음을 추가한다. : AddModule modules/php3/libphp3.a Apache 1.3.x에서는 더이상 아무것도 필요 없다. 단지 위의 한줄을 추가한 후에 "./Configure" 를 실행하고, "make"하여 만든다. Apache 1.2.x는 다음을 추가한다. : Module php3_module mod_php3.o Apache 1.2.x에서는 src 디렉토리에 있는 libphp3.module 파일을 살펴 보아야 한다. Configuration 파일의 EXTRA_LIBS 라인을 libphp3.module의 LIBS 줄에 명시된 libs와 동일하게 설정해야 한다. 또한 EXTRA_LIBS 라인에 "-L."도 추가할 필요가 있다. 따라서, 예를 들면, 다음과 같은 형태가 되어야 한다. : EXTRA_LIBS=-L. -lphp3 -lgdbm -ldb -L/usr/local/mysql/lib -lmysqlclient NOTE: libphp3.module 파일에는 큰 따옴표(")가 있는데, EXTRA_LIBS 줄에는 이를 빼야 한다. 또한, libphp3.module의 RULE_WANTHSREGEX 설정을 살펴보아, Configuration 파일의 WANTHSREGEX 지시자를 따라서 설정해 주어야 한다. 이 마지막 단계는 Apache 1.3b3까지는 적용해 주어야 한다. 이 단계를 생략할 수 있다는 것 만으로도 Apache 1.3.x로 업그레이드하는 것이 좋을 것이다. 이제 원하는 Configuration 설정이 완료되었으면 "./Configure"를 실행한다. 에러가 난다면, 아마도 일부 라이브러리를 빼 먹었거나 철자가 틀렸을 것이다. Configuration 을 다시 수정하고 재 시도 해보자. 잘 끝나면 "make"를 실행한다. 4. 서버 설정 이제 새로운 httpd 실행 파일이 만들어 졌다. 기존의 서버를 중단하고, 기존의 파일에 새 파일을 덮어 쓴다. 아마 기존의 파일들은 미리 백업해 놓는 것이 좋을 것이다. 복사가 완료 되면 conf/srm.conf 파일에 다음의 내용을 추가한다. : AddType application/x-httpd-php3 .php3 또한 다음과 같은 내용을 추가하면 디버깅등에서 유용하게 사용할 수 있다. 이것은 PHP 문장을 색을 붙여 보기 좋게 만들어 주는 옵션이다. 이것을 가능하게 하려면 다음과 같은 줄을 추가한다. : AddType application/x-httpd-php3-source .phps 이렇게 하면 .phps로 끝나는 모든 파일이 실행되는 대신 소스가 full colour syntax로 장식되어 화면에 그대로 표시되게 된다. srm.conf의 수정이 완료되면 이제 서버를 시작하면 된다.