본문으로 바로가기

PHP와 OCI 모듈이 연동되었는지는 OCI 함수 실행

 

# php -r "oci_connect();"

Fatal error: Call to undefined function oci_connect() in Command line code on line 1

=> 연동안된 상태

 

Warning: oci_connect() expects at least 2 parameters, 0 given in Command line code on line 1

=>연동된 상태 (파라미터 오류)

 

 

php.ini를 열어 ;extension=oci8.so가 있는지 확인해보자. 만약 있다면 주석을 풀어주고 httpd를 재시작하면 바로 작동할 것

 

php.ini에 extension 설정이 없다면. /etc/php.d 에 oci8.ini 파일을 생성하여 설정해야함.

 

 

오라클 instant client 다운로드

리눅스용 instant client rpm(basic, devel)을 다운로드

 

https://www.oracle.com/database/technologies/instant-client/downloads.html 

Instant Client for Linux x86-64  클릭

 

oracle-instantclient19.3-basic-19.3.0.0.0-1.x86_64.rpm 다운로드 (버전은 적절히..)

oracle-instantclient19.3-devel-19.3.0.0.0-1.x86_64.rpm 다운로드 (버전은 적절히..)

(다운로드시 로그인 필요)

 

 

다운받은 파일을 웹서버에 업로드

해당 디렉토리 이동 > 설치

# rpm -ivh oracle-instantclient19.3-basic-19.3.0.0.0-1.x86_64.rpm 

# rpm -ivh oracle-instantclient19.3-devel-19.3.0.0.0-1.x86_64.rpm 

 

 

설치파일 제거

# rm -f  oracle-instantclient19.3-basic-19.3.0.0.0-1.x86_64.rpm 

# rm -f  oracle-instantclient19.3-devel-19.3.0.0.0-1.x86_64.rpm 

 

 

OCI8 설치

http://pecl.php.net/package/oci8 여기에서 버전을 확인하고 다운받거나

# wget http://pecl.php.net/get/oci8-2.2.0.tgz 로 다운로드

 

 

압축해제

# tar xvzf oci8-2.2.0.tgz

 

이동

# cd oci8-2.2.0

 

phpize를 이용하여 모듈 추가

#phpize

 

-bash: phpize: command not found - 오류 발생시 php-devel 설치 

 

# yum list php-devel

 

처음 php를 설치할 때 remi 저장소를 사용했다면.
확장모듈 설치할 때도 항상 remi 저장소를 사용해야 충돌이 나지 않음.

yum --enablerepo=remi-php56 install php-devel

 

 

Oracle 설치 경로 확인

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

64비트 운영체제라면 /usr/lib64/oracle/19.3/client/lib/

일수 있으나 직접 확인해 야 함

 

# ./configure --with-oci8=shared,instantclient,/usr/lib/oracle/19.3/client64/lib

# make all install

 

설치 완료

 

/usr/lib64/php/modules 폴더에 oci8.so 파일이 있는것 확인 (경로는 다를 수 있음)

# ll /usr/lib64/php/modules/oci8.so 

 

 

oci 모듈을 로딩하도록 설정

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

 

httpd 재시작

systemctl restart httpd

 

 

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

 

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

 

로 바꿔주세요.


출처: https://trend21c.tistory.com/1489 [나를 찾는 아이]

 

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

 

 

참고

https://zetawiki.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

https://zetawiki.com/wiki/CentOS_php-devel_%EC%84%A4%EC%B9%98