티스토리 뷰

WEB2.0/프로그래밍

php와 oracle 사용하기

나를찾는아이 2013. 2. 18. 11:09
728x90
반응형

php는 보통 mysql과 사용하는 경우가 많지만 오라클과 함께 사용하는 경우도 더러 있죠.

 

주 DB는 mysql 이지만 특정 데이터를 가져오기 위해 다른 곳에서 사용중인 오라클 DB를 조회해야할 때도 있고요.

 

php는 설치시에 기본적으로 오라클을 지원하는 모듈을 설치하지 않기 때문에

 

오라클과 연동하여 php의 오라클 관련 함수를 사용하려면 직접 설치해주셔야 합니다.

 

 

 

오라클 instant client 설치

 

 


http://www.oracle.com/technetwork/indexes/downloads/index.html#database

 

에 접속하여 Database 섹션의 Instant Client를 클릭합니다.

 

 

 

다운로드 목록이 나타나는데 여러분이 사용하시는 운영체제를 선택합니다.

 

 

 

 

Accept License Agreement를 체크해주시고

 

이 두개를 다운받습니다. 하나는 basic 다른 하나는 devel 입니다.

devel도 반드시 필요하니 2개를 모두 설치해주세요

 


oracle-instantclient11.2-basic-11.2.0.3.0-1.x86_64.rpm
oracle-instantclient11.2-devel-11.2.0.3.0-1.x86_64.rpm

다운로드 하셨다면 받은 파일을 서버에 업로드후 rpm을 실행해봅시다.

 

# rpm -i oracle-instantclient11.2-basic-11.2.0.3.0-1.x86_64.rpm
# rpm -i oracle-instantclient11.2-devel-11.2.0.3.0-1.x86_64.rpm

 

설치가 잘 되었는지 확인해볼까요

 

# rpm -qa | grep oracle

 

 

rpm 설치를 마쳤으니 파일은 삭제하셔도 무방합니다.

# rm -f oracle-instantclient11.2-basic-11.2.0.3.0-1.x86_64.rpm
# rm -f oracle-instantclient11.2-devel-11.2.0.3.0-1.x86_64.rpm

 


OCI8 설치

 

현재(2013년 2월 18일) 기준으로 1.4.9 버전이 최신버전입니다.

 

Use 'pecl install oci8' to install for PHP 8.1.
Use 'pecl install oci8-3.0.1' to install for PHP 8.0.
Use 'pecl install oci8-2.2.0' to install for PHP 7.
Use 'pecl install oci8-2.0.12' to install for PHP 5.2 - PHP 5.6.
Use 'pecl install oci8-1.4.10' to install for PHP 4.3.9 - PHP 5.1.

 

사용하는 php 버전에 맞춰 최신버전의 oci8을 다운로드 받고 설치를 해봅시다.

 

 

여러분이 방금전 설치한 오라클 클라이언트는

 

32비트 운영체제라면 /usr/lib/oracle/11.2/client/lib/ 에

64비트 운영체제라면 /usr/lib64/oracle/11.2/client/lib/ 에 설치되었을테니(그렇지 않은 경우도 있습니다)

 

여러분에 맞는 경로를 입력해주셔야 합니다.

 

pecl으로 설치를 진행해주셔도 되고

 

# pecl install oci8-2.0.12

 

경로입력 요청시

 

instantclient,/usr/lib/oracle/11.2/client64/lib/

 

 

소스코드형태로 설치해주셔도 됩니다

 

 

# wget http://pecl.php.net/get/oci8-1.4.9.tgz
# tar xvzf oci8-1.4.9.tgz
# cd oci8-1.4.9
# phpize
# ./configure --with-oci8=shared,instantclient,/usr/lib/oracle/11.2/client/lib/
# make all install

 

이렇게 설치를 마치고 나면

 

/usr/lib(64)/php/modules 폴더에 oci8.so 파일이 있는것을 볼 수 있습니다.

 

이제 php가 이 모듈을 로드할수 있도록 해줘야 합니다.

 

/etc/php.d/ 에 ini 파일을 추가해주겠습니다.

 

php가 실행되면 여기에 있는 ini파일을 자동으로 로드합니다.

# echo 'extension=oci8.so' > /etc/php.d/oci8.ini
# service httpd restart


그리고 재실행

 

설치과정에 별다른 문제가 없었다면 이제 여러분들은 php의 oci 함수들을 사용하실 수 있습니다.

 

 

 

 

oci_connect 함수가 정의되지 않았다고 오류가 날때

 

이렇게 다 설치를 마치고 났는데도 불구하고

 

php에서 oci_connect 함수를 사용했는데 함수가 정의되지 않았다고 오류가 나타난다면 아래 처럼 해보세요.

 

아마도 여러분의 아파치 error_log에 이렇게 나타나있을겁니다.

 

PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/lib/php/modules/oci8.so' - libnnz11.so: cannot enable executable stack as shared object requires: Permission denied in Unknown on line 0

 

 

먼저 실행해주시고

# /usr/sbin/setenforce 0

 

# vi /etc/selinux/config

 

파일을 열어

 

SELINUX=disabled

 

로 바꿔주세요.

 

 

 

 


참고

http://jmnote.com/wiki/PHP%EC%97%90%EC%84%9C_%EC%98%A4%EB%9D%BC%ED%81%B4_DB_%EC%82%AC%EC%9A%A9

728x90
반응형
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함