본문 바로가기

DataBase

오라클 9i + php5 연동 매뉴얼


오라클 9i+ php5 연동 매뉴얼

 

 

※본 문서는 Linux RedHat9 교재에 있는 오라클과 php4.4.2 연동 내용을 참고함

-설치 순서

1. 우선 Linux RedHat9 와 오라클 9i가 설치되어 있어야 한다.

2. Apache 2.0.58 Released 설치(http://www.apache.org/)

3. PHP-5.1.4 설치(http://www.php.net/downloads.php/)

4. 환경설정 파일 수정

1. Linux RedHat9 와 오라클 9i 설치는 각자 알아서 설치한다.(-_-;;)

2. Apache 2.0.59 Released 설치

1)httpd-2.0.59.tar.gz 다운

2)tar xvfz httpd-2.0.59.tar.gz

3)cd httpd-2.0.59

4)./configure --prefix=/usr/local/apache --enable-mods-shared=most --enable-modules=so

--with-mpm=worker --enable-module=vhost_alias

5)make && make install

6)echo "/usr/local/apache/lib" >> /etc/ld.so.conf

7)echo "/usr/local/apache/modules" >> /etc/ld.so.conf

8)ldconfig

3.PHP-5.1.4 설치

※설치전에 다음에 4가지를 설치한다.

-libjpeg 설치

• wget http://ftp.superuser.co.kr/pub/etc/jpegsrc.v6b.tar.gz

• tar zxvf jpegsrc.v6b.tar.gz

• cd jpeg-6b/

• ./configure --enable-shared --enable-static

• make

• make test

• mkdir /usr/local/man/man1 -p

• make install

• cd ..

• rm -rf jpeg*

-libpng 설치

• wget http://ftp.superuser.co.kr/pub/etc/libpng-1.2.5.tar.gz

• tar zxvf libpng-1.2.5.tar.gz

• cd libpng-1.2.5

• cp scripts/makefile.linux makefile

• make test && make install

-zlib 설치

• wget http://ftp.superuser.co.kr/pub/etc/zlib-1.1.4.tar.gz

• tar zxvf zlib-1.1.4.tar.gz

• cd zlib-1.1.4

• ./configure && make && make install

• cd ..

• rm -rf zlib-1.1.4*

-libxml2-2.6.11설치(2.6.11 버전이 아니라서 에러날 경우)

• wget ftp://ftp.gnome.org/pub/GNOME/sources/libxml2/2.6/libxml2-2.6.11.tar.gz

• tar zxvf libxml2-2.6.11.tar.gz

• ./configure --prefix=/usr

• make && make install

1)오라클 클라이언트 설치한 디렉토리에755 퍼미션 준다.(중요)

(아파치 php함수들을 사용하기 위해서, 안하면 퍼미션 에러 뜬다.)

chmod -R 755 /home/oracle

2)php-5.1.4.tar.gz

3)tar xvfz php-5.1.4.tar.gz

4)cd PHP-5.1.4

5)./configure --with-exec-dir=/usr/local/apache/bin --with-apxs2=/usr/local/apache/bin/apxs

--with-config-file-path=/usr/local/apache/conf --with-oracle=/home/oracle/oracle/product/9.2.0

--with-oci8=/home/oracle/oracle/product/9.2.0 --enable-track-vars

--enable-sigchild <-- 이거 좀비 프로세스 생성방지를 위한 옵션

6)make && make install

7)cp php.ini-dist /usr/local/apache/conf/php.ini

4. 환경설정 파일 수정

1)httpd.conf 파일내부 옵션 수정

• vi /usr/local/apache/conf/httpd.conf

• 321 ServerName 자기 IP 또는 HostName 입력(211.254.138.180:80)

• 337 DocumenRoot "/usr/local/apache/htdocs" -->원하는 위치로 수정가능.

• 424 DirectoryIndx index.php index.html index.html.var

• 867 AddType application/x-httpd-php .php .php3 .php4 .php5 .html .htm

• 868 AddType application/x-httpd-php-source .phps

2)php.ini 파일내부 옵션 수정

• vi /usr/local/apache/conf/php.ini

• 399 register_globals=Off --> On

• 471 extension_dir="./" --> "/usr/local/apache/modules/"

• 599 ;extension=php_msql.dll

• 600 extension=php_oci8.dll // 이부분 주석 ; 을 풀어준다

• 601 ;extension=php_openssl.dll

• 602 extension=php_oracle.dll // 이부분 주석 ; 을 풀어준다

3)sqlnet.ora 파일내부 옵션 수정

• vi /home/oracle/oracle/product/9.2.0/network/admin/sqlnet.ora

NAMES.DIRECTORY_PATH= (TNSNAMES, ONAMES, HOSTNAME) <- 추가한 내용

#NAMES.DIRECTORY_PATH= (TNSNAMES) <-- 기존의 내용

위처럼 수정한다.

4)아파치 웹서비스가 오라클관련 명령어들을 사용살수 있도록 아파치 실행 명령어에 아래와 같이 추가

cd /home/oracle

vi .bash_profile 안에 내용중에서 아래 부분 복사

# Oracle Environment

export LD_ASSUME_KERNER=2.4.1

export ORACLE_BASE=/home/oracle/oracle

export ORACLE_HOME=/home/oracle/oracle/product/9.2.0

export ORACLE_SID=hdba180 <-- 요거 자기의 sid명 들어감.. 따라하지 마시길..ㅋ

export ORACLE_TERM=xterm

export ORACLE_OWNER=oracle

export LANG="C"

export NLS_LANG=AMERICAN_AMERICA.KO16KSC5601

export ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data

LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib:/usr/local/lib

vi /usr/local/apache/bin/apachectl 열어서.

#!/bin/sh

#

아래에 추가

그리고 저장하고 아파치 정지 -> 스타트

• cd /usr/local/apache/bin

• ./apachectl stop

• ./apachectl start

----------------------------------------------------------------

테스트

/usr/local/apache/htdocs 에 test.php 파일을 아래와 같이 작성합니다

<?

$conn=OCILogon("scott", "tiger", "tns이름");

if(!$conn)

{

echo "데이터베이스 연결 실패...ㅠㅠ";

}

else

{

echo "호스트 연결 성공~!! *^^*";

$query = "select * from emp";

$stmt = ociparse($conn,$query);

OCIExecute($stmt);

OCIFetchInto ($stmt, &$rows, OCI_ASSOC);

echo "<br>사원명: $rows[ENAME]";

}

OCIlogoff($conn);

?>



출처 : http://cafe.naver.com/afan/134