커피닉스, 시스템 엔지니어의 쉼터
  Oracle 9iAS웹서버+Oracle9i에 php 설치 (AIX 4.3.3) 작성일 : 2003/08/15 22:51
 
  • 글쓴이 : 좋은진호 ( http://coffeenix.net/ )
  • 조회수 : 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만 호출하면 실행되지 않음
       (단, 만 있는 php파일을 호출하면 실행은 됨 )

       -> Oracle 9ias error log 파일을 확인해보라.
          child process가 제대로 생성되지 않아서 발생할 가능성이 크다.

       -> 9ias 홈이 /oracle/ias라고 했을 때 /oracle/ias/Apache/Apache/libexec/libphp4.so
          의 파일 크기 얼마인지 확인해보라.
          정상적으로 컴파일 됐을 때 약 3M정도였고, 문제가 발생했을 때는 5M 짜리였음.

          php4를 다시 컴파일을 해서 정상적으로 생성된 libphp4.so 파일을 이용해야 함


    커피닉스, 시스템 엔지니어의 쉼터 / URL : http://coffeenix.net/board_view.php?bd_code=23