| Oracle 9iAS웹서버+Oracle9i에 php 설치 (AIX 4.3.3) | 작성일 : 2003/08/15 22:51 |
| 조회수 : 37118 |
|
작성자 : 좋은진호(truefeel, http://coffeenix.net/ ) 작성일 : 2002.5.8~9 AIX 4.3.3에서 Oracle 9i와 9iAS 웹서버가 이미 설치된 상태에서 웹에서 php를 쓸 수 있도록 붙이는 과정과 발생할 수 있는 문제를 간략히 설명한다. < 설치 환경 > * OS : IBM AIX 4.3.3 * Oracle 9i + Oracle 9iAS 웹서에 php 4.X를 설치 (Oracle 8i가 아닌 9i 여도 php4에서 사용하는데 문제없음) * 기타 : gcc + gnu make + gzip + bison 등은 설치되어 있음 < 설치 순서 > zlib, libpng, jpeglib -> GDlib -> PHP4 < 필요한 lib 있는 사이트 > ※ GDLib 다운로드 http://www.boutell.com/gd/ http://www.boutell.com/gd/http/gd-1.8.4.tar.gz ※ zlib 다운로드 http://www.gzip.org/zlib/ ※ pnplib 다운로드 http://www.libpng.org/pub/png/pngcode.html ※ AIX용 바이너리 패키지 http://aixpdslib.seas.ucla.edu/ 1. php 설치 전에 GD lib를 사용하기 위해서 필요한 lib 설치 1) zlib-1.1.4.tar.gz libpng-1.2.2.tar.gz jpeg.6b.tar.Z (또는 http://aixpdslib.seas.ucla.edu/ 에서 받은 바이너리 jpeg.6b-bin.tar.Z 설치) 2) GDlib 설치 (http://www.boutell.com/gd/gd-1.8.4.tar.gz) GDlib 설치위해서 -> zlib, libpng, jpeg lib 필요 a) tar xvfz gd-1.8.4.tar.gz b) Makefile 파일 수정 CFLAGS=-O -DHAVE_JPEG LIBS=-lm -lgd -lpng -lz -ljpeg INSTALL_LIB=/usr/local (확인만) INSTALL_INCLUDE=/usr/local (확인만) ※ lib(libgd.a)와 header(*.h)는 각 /usr/local/lib와 /usr/local/include에 설치됨 c) make d) make install 2. PHP4 컴파일 1) 9ias 웹서버 홈 디렉토리가 /oracle/ias 일 때 /oracle/ias/Apache/Apache/bin/apxs 스크립트의 첫 줄 수정 #!/oracle/ias/Apache/... 에 -I/oralce/ias/Apache/perl/lib/5.00503 옵션을 추가 2) ./configure --with-apxs=/oracle/ias/Apache/Apache/bin/apxs \ --with-config-file-path=/oracle/ias/Apache/Apache/conf \ --prefix=/oracle/ias/Apache/Apache/php \ --with-oci8=/oracle/app/oracle/product/9.0.1 \ --with-oracle=/oracle/app/oracle/product/9.0.1 \ --enable-safe-mode -enable-debugger --enable-track-vars \ --without-mysql --enable-sigchild \ --with-zlib=/usr/local --with-gd=/usr/local --with-jpeg-dir=/usr/local \ --with-regex=system ※ - 9ias 웹서버 홈 디렉토리는 /oracle/ias - Oracle 9i 홈 디렉토리는 /oracle/app/oracle/product/9.0.1 인 경우임 - MySql은 사용 안하므로 --without-mysql (옵션을 넣지 않을 경우 컴파일시 오류 발생할 수 있음) - GD lib을 사용하기 위해 --with-zlib=/usr/local --with-gd=/usr/local --with-jpeg-dir=/usr/local 3) make 성공적(몇몇 warning은 무시)으로 컴파일이 되더라도 libtool의 버그(?)로 인해서 libs/ 디렉토리에 libphp4.so 파일이 만들어지지 않는다. 따라서 .libs/libphp4.so.0 파일을 lib/libphp4.so 이름으로 복사 # ls .libs libphp4.a libphp4.exp libphp4.la libphp4.lai libphp4.so.0 # cp -p .libs/libphp4.so.0 libs/libphp4.so 4) make install ... 생략 ... Making install in . /work/php-4.2.0/build/shtool mkdir -p "/oracle/ias/Apache/Apache/libexec" && /oracle/ias/Apache/Apache/bin/apxs -S LIBEXECDIR="/oracle/ias/Apache/Apache/libexec" -i -a -n php4 libs/libphp4.so cp libs/libphp4.so /oracle/ias/Apache/Apache/libexec/libphp4.so chmod 755 /oracle/ias/Apache/Apache/libexec/libphp4.so [activating module `php4' in /oracle/ias/Apache/Apache/conf/httpd.conf] installing shared modules into /oracle/ias/Apache/Apache/php/lib/php/extensions/no-debug-non-zts-20010901 목표 "install-p"은(는) 최근의 것입니다. Making install in pear Installing Archive/Tar.php Installing Console/Getopt.php Installing PEAR.php ... 생략 ... Installing Schedule/At.php Installing header files Installing build environment Installing program: phpize Installing program: php-config Installing program: pear Installing program: pearize Installing program: phptar Installing program: phpextdist 목표 "install-p"은(는) 최근의 것입니다. 목표 "install"은(는) 최근의 것입니다. 목표 "install"은(는) 최근의 것입니다. ※ 만약 make가 정상적으로 되었는데 다음과 같은 오류가 나왔다면 2)의 libphp4.so 파일 복사 과정을 하지 않아서 발생하는 오류임 ----------------------------------- Making install in . make[1]: 들어감 `/work/php-4.2.0' 디렉토리 /work/php-4.2.0/build/shtool mkdir -p "/oracle/ias/Apache/Apache/libexec" && /oracle/ias/Apache/Apache/bin/apxs -S LIBEXECDIR="/oracle/ias/Apache/Apache/libexec" -i -a -n php4 libs/libphp4.so cp libs/libphp4.so /oracle/ias/Apache/Apache/libexec/libphp4.so cp: libs/libphp4.so: 경로 이름에 있는 파일이나 디렉토리가 존재하지 않습니다. apxs:Break: Command failed with rc=1 make[1]: *** [install-sapi] 오류 1 make[1]: 나감 `/work/php-4.2.0' 디렉토리 make: *** [install-recursive] 오류 1 ----------------------------------- 3. 9ias conf 수정 4. 문제 해결 1. php make할 때 다음과 같은 오류가 나온다면... ... 생략 ... cc: 1501-218 file ext/mysql/.libs/libmysql.al contains an incorrect file suffix cc: 1501-218 file ext/oci8/.libs/liboci8.al contains an incorrect file suffix cc: 1501-218 file ext/pcre/.libs/libpcre.al contains an incorrect file suffix cc: 1501-218 file ext/posix/.libs/libposix.al contains an incorrect file suffix cc: 1501-218 file ext/session/.libs/libsession.al contains an incorrect file suffix ... 생략 ... -> gcc로 컴파일이 되지 않고 cc로 컴파일이 됨. gcc로 컴파일해야 됨(?) 1. gcc는 설치를 했나? 2. 다음과 같이 CC 환경변수를 지정한 후에 configure를 실행하지는 않았나? export CC='cc -Dinline= -ma' ./configure ...옵션들 생략 ... --> CC 환경 변수는 없애고 configure 다시 실행 2. 웹에서 오라클 함수를 사용한 php를 실행할 경우 다음과 같은 오류가 나온다면... Warning: _oci_open_server: ORA-12545: Connect failed because target host or object does not exist in /web/doc/phps/lib/connect.php on line 4 ... 생략 ... -> 오라클 DB에 접속하는 OCIPLogon 함수 사용을 확인해보라. OCIPLogon에 리스너명을 지정하면 해결됨. $conn = OCIPLogon(오라클 ID,PW, 리스너명) or die("Unable to connect to SQL server"); 3. php4를 붙여서 9ias를 실행하는데는 문제가 없는데 php만 호출하면 실행되지 않음 (단, phpinfo(); ?> 만 있는 php파일을 호출하면 실행은 됨 ) -> Oracle 9ias error log 파일을 확인해보라. child process가 제대로 생성되지 않아서 발생할 가능성이 크다. -> 9ias 홈이 /oracle/ias라고 했을 때 /oracle/ias/Apache/Apache/libexec/libphp4.so 의 파일 크기 얼마인지 확인해보라. 정상적으로 컴파일 됐을 때 약 3M정도였고, 문제가 발생했을 때는 5M 짜리였음. php4를 다시 컴파일을 해서 정상적으로 생성된 libphp4.so 파일을 이용해야 함 |
|||||||||
|
|