====== Setting the PHP with Oracle Module on Ubuntu 16.04 ======
===== ubuntu package install =====
- apache2 # apt-get install apache2
- php # apt-get install php
- php module # apt-get install php-mysql php-xmlrpc php-xml php-curl php-gd php-pear
- apache2 php7.0 module # apt-get install libapache2-mod-php7.0
- php dev # apt-get install php7.0-dev
- build essential # apt-get install build-essential libaio1
==== 한방에 설치 ====
# apt-get install apache2 php php-mysql php-xmlrpc php-xml php-curl php-gd php-pear libapache2-mod-php7.0 php7.0-dev build-essential libaio1 unzip
===== apache2 설정 =====
- apache2 모듈 중에서 rewrite 와 headers 를 활성화시킨다. # a2enmod rewrite headers
===== oracle instantclient 설치 및 설정 =====
==== oracle instant 다운로드 ====
- http://oracle.com 에서 다운로드 받는다.
- [[ http://adminschool.net/admin_data/oracle_instant/instantclient-basic-linux.x64-11.2.0.4.0.zip | instantclient-basic-linux.x64-11.2.0.4.0.zip ]] (필수)
- [[ http://adminschool.net/admin_data/oracle_instant/instantclient-jdbc-linux.x64-11.2.0.4.0.zip | instantclient-jdbc-linux.x64-11.2.0.4.0.zip ]]
- [[ http://adminschool.net/admin_data/oracle_instant/instantclient-odbc-linux.x64-11.2.0.4.0.zip | instantclient-odbc-linux.x64-11.2.0.4.0.zip ]]
- [[ http://adminschool.net/admin_data/oracle_instant/instantclient-sdk-linux.x64-11.2.0.4.0.zip | instantclient-sdk-linux.x64-11.2.0.4.0.zip ]] (필수)
- [[ http://adminschool.net/admin_data/oracle_instant/instantclient-sqlplus-linux.x64-11.2.0.4.0.zip | instantclient-sqlplus-linux.x64-11.2.0.4.0.zip ]]
- [[ http://adminschool.net/admin_data/oracle_instant/instantclient-tools-linux.x64-11.2.0.4.0.zip | instantclient-tools-linux.x64-11.2.0.4.0.zip ]]
==== oracle instant 설정 ====
- 압축해제
# unzip instantclient-basic-linux.x64-11.2.0.4.0.zip
# unzip instantclient-sdk-linux.x64-11.2.0.4.0.zip
- 압축해제 폴더이동 # mv instantclient_11_2/ /usr/local/
- 디렉토리 이동 # cd /usr/local/instantclient_11_2/
- 심볼릭링크 생성
# ln -s /usr/local/instantclient_11_2/libclntsh.so.11.1 /usr/local/instantclient_11_2/libclntsh.so
# ln -s /usr/local/instantclient_11_2/libocci.so.11.1 /usr/local/instantclient_11_2/libocci.so
- LD 설정파일 생성 # echo /usr/local/instantclient_11_2 > /etc/ld.so.conf.d/oracle-instantclient
- LD 설정적용 # ldconfig
- 필요에 따라서 BASH 파일에 설정한다
$ vi ~/.bashrc
...
export DYLD_LIBRARY_PATH="/usr/local/instantclient_11_2"
export TNS_ADMIN="/usr/local/instantclient_11_2"
export ORACLE_HOME="/usr/local/instantclient_11_2"
...
===== OCI8 설치 및 설정 =====
- [[ develop:php:oci8_install | Enabling the PHP OCI8 Extension on Debian(Unbuntu) ]] 참조
- https://pecl.php.net/package/oci8 에서 최신버젼을 다운로드 받는다.
# wget https://pecl.php.net/get/oci8-2.1.8.tgz
- 압축을 해제한다.
$ tar xvfz oci8-2.1.8.tgz
- 소스경로로 이동한다.
$ cd oci8-2.1.8/
- PHP 확장모듈을 위한 빌드환경을 만들기 위해 phpize 를 실행한다.
$ phpize
- libclntsh.so 경로를 확인한다.
$ ls /usr/local/instantclient_11_2/libclntsh.so
/usr/local/instantclient_11_2/libclntsh.so
- 환경설정을 맞춰서 컴파일을 한다.
$ ./configure --with-oci8=instantclient,/usr/local/instantclient_11_2
- make 와 make test 를 실행한다.
# make
# make test
- make install 를 실행한다. \\ root가 아닐 경우 퍼미션 에러가 날 수 있다, 이때에는 sudo 를 같이 써준다.
# make install # root 일때
또는
$ sudo make install # sudo 권한을 가진 user 일때
- oci8.so 파일을 확인한다
# ls /usr/local/instantclient_11_2/oci8.so
/usr/local/oracle/instantclient_11_2/oci8.so
# ls /usr/lib/php/20151012/oci8.so
/usr/lib/php/20151012/oci8.so
- /etc/php/7.0/apache2/php.ini 파일에 oci8.so 를 등록한다
# vi /etc/php/7.0/apache2/php.ini
...
extension=oci8.so
...
- apache2 를 재시작한다. # /etc/init.d/apache2 restart
- oci8.so 모듈을 확인해 본다. (이 방법은 확인이 안될때도 있다)
# php -m | grep oci8
oci8
- phpinfo(); 를 이용하여 웹에서 확인을 할 수도 있다.