KimsFactory*

[Ubuntu 16.04] 우분투 오라클 클라이언트 설치 - sqlplus php5.6 php7.0 oracle client install 본문

Server

[Ubuntu 16.04] 우분투 오라클 클라이언트 설치 - sqlplus php5.6 php7.0 oracle client install

KimsFactroy 2017. 2. 8. 20:10

이전에 포스팅 했던 Ubuntu Server 16.04.1 LTS LAMP (Apache2, Mysql5.5, PHP5/7) 설치하기 를 기본으로 오라클 클라이언트 설치를 진행해본다..



[Ubuntu 16.04] 우분투 오라클 클라이언트 설치 - sqlplus php5.6 php7.0 oracle client install

[다운로드]http://www.oracle.com/technetwork/indexes/downloads/index.html#database

Database 섹션에서 Instant Client 클릭


Instant Client Downloads 에서 Download Instant Client for Linux x86-64 클릭



Instant Client Downloads for Linux x86-64 에서
Accept License Agreement 체크 하고


oracle-instantclient12.1-basic-12.1.0.2.0-1.x86_64.rpm
oracle-instantclient12.1-devel-12.1.0.2.0-1.x86_64.rpm
oracle-instantclient12.1-sqlplus-12.1.0.2.0-1.x86_64.rpm

다운로드 후 서버에 업로드



다운로드 받은 3개 파일을 서버에 업로드한 후

$ apt-get install alien

$ alien -i oracle-instantclient12.1-basic-12.1.0.2.0-1.x86_64.rpm
$ alien -i oracle-instantclient12.1-sqlplus-12.1.0.2.0-1.x86_64.rpm
$ alien -i oracle-instantclient12.1-devel-12.1.0.2.0-1.x86_64.rpm

// sqlplus 실행
$ sqlplus64 username/password@//dbhost:1521/SID
sqlplus64: error while loading shared libraries: libsqlplus.so: cannot open shared object file: No such file or directory


$ vi /etc/ld.so.conf.d/oracle.conf && sudo chmod o+r /etc/ld.so.conf.d/oracle.conf
/usr/lib/oracle/12.1/client64/lib/

$ ldconfig


// sqlplus 실행
$ sqlplus64 username/password@//dbhost:1521/SID

아래와 같은 화면이 나오면 성공!!






ORACLE_HOME 설정
$ vi /etc/profile.d/oracle.sh && sudo chmod o+r /etc/profile.d/oracle.sh
export ORACLE_HOME=/usr/lib/oracle/12.1/client64

[참고 URL]https://help.ubuntu.com/community/Oracle%20Instant%20Client



[우분투 16.04 + PHP5.6]
https://pecl.php.net/package/oci8
PHP 5.2 ~ 5.6 => pecl install oci8-2.0.12

pecl 에러 나는 경우
apt-get install php5.6-xml

$ pecl download oci8-2.0.12
이나
$ wget http://pecl.php.net/get/oci8-2.0.12.tgz

$ tar xvzf oci8-2.0.12.tgz
$ cd oci8-2.0.12
$ phpize

php-config 확인
$ ls -al /usr/bin/php-config*

$ update-alternatives --config php
[참고URL] https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=819139

/usr/bing/php-config5.6이 없는 경우
$ apt-get install -y php5.6-dev --allow-unauthenticated

$ ./configure --with-oci8=shared,instantclient,/usr/lib/oracle/12.1/client64/lib --with-php-config=/usr/bin/php-config5.6

$ make all install


[우분투 16.04 + PHP7.0]
https://pecl.php.net/package/oci8
PHP 7 => pecl install oci8

pecl 에러 나는 경우
apt-get install php7.0-xml

$ pecl download oci8
이나
$ wget http://pecl.php.net/get/oci8-2.1.3.tgz


$ tar xvzf oci8-2.1.3.tgz
$ cd oci8-2.1.3
$ phpize
$ ./configure --with-oci8=shared,instantclient,/usr/lib/oracle/12.1/client64/lib --with-php-config=/usr/bin/php-config7.0


[공통]
php.ini 마지막에 아래 내용 추가: cli php.ini도 함께 수정
[oracle]
extension=oci8.so

php oracle 접속 확인
$ php -r "oci_connect();"
PHP Warning:  oci_connect() expects at least 2 parameters, 0 given in Command line code on line 1
PHP Stack trace:
PHP   1. {main}() Command line code:0
PHP   2. oci_connect() Command line code:1
이렇게 나오면 접속 성공!!

$ php -r "oci_connect();"
PHP Fatal error:  Uncaught Error: Call to undefined function oci_connect() in Command line code:1
Stack trace:
#0 {main}
  thrown in Command line code on line 1
이렇게 나오면 실패;;


[PECL 에러 나는 경우]
sudo apt-get purge php*-xml
sudo apt-get autoremove php*-xml
sudo apt-get install php-xml php5.6-xml php7.0-xml

Comments