Instalasi Oracle Client Oci8 PHP di Ubuntu 16.04

Home Teknologi Programming Instalasi Oracle Client Oci8 PHP di Ubuntu 16.04
php-oracle-ubuntu-16

Beberapa hari ini saya disibukkan dengan webserver baru untuk development. Karena saya hanya bisa minta virtual server ke si empunya server, alhasil saya diberi sebuah server berbasis Ubuntu 16.04. Tak disangka-sangka server dengan OS Ubuntu terbaru ini sedikit menyulitkan saya untuk melakukan setup webserver. Permasalahan utama yaitu Ubuntu 16.04 tidak mendukung PHP di bawah versi 7. Mulailah pengembaraan saya mencari cara agar kebutuhan untuk web app kami bisa berjalan lancar.

Berikut tutorial instalasi Apache + MySQL + PHP 5.6 + Oracle Client Oci8 di Ubuntu 16.04 (Xenial Xerus) 64bit 

0. Prasyarat

  • Ubuntu 16.04 64bit
  • Terkoneksi jaringan internet
  • Akses root atau sudoers

Catatan sebagian besar perintah di bawah ini diakses menggunakan login user root atau awali setiap perintah dengan sudo.

 

1. Instalasi Apache dan MySQL

Instalasi Apache dan MySQL seperti biasa

# apt-get install apache2
# apt-get install mysql-server libapache2-mod-auth-mysql

Ikuti setiap langkah seperti memasukkan root password mysql dll. Saya tidak membahas lebih detil karena bisa dilihat di sini.

 

2. Instalasi PHP 5.6

Karena repo Ubuntu 16.04 secara default hanya mensupport PHP7, maka terlebih dahulu kita hapus instalasi PHP7

# apt-get install aptitude
# aptitude purge `dpkg -l | grep php| awk '{print $2}' |tr "n" " "`

kemudian kita tambahkan repo PHP 5.6 yang berada di ppa

# add-apt-repository ppa:ondrej/php

setelah itu kita dapat memasang PHP 5.6

# apt-get update
# apt-get install php5.6

setelah selesai kita bisa mengecek versi PHP dengan cara

# php -v
PHP 5.6.21-7+donate.sury.org~xenial+1 (cli)
Copyright (c) 1997-2016 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies
with Zend OPcache v7.0.6-dev, Copyright (c) 1999-2016, by Zend Technologies

 

3. Instalasi Oracle Client dan module OCI8 untuk PHP

a. Oracle Client

Download Oracle Client Basic dan SDK (jika perlu SQL*Plus) dari halaman download resminya yang berekstensi .rpm saja, nantinya akan kita konversi ke .deb. Setelah itu upload file downloadan ke server (melalui FTP/SCP). Sebenarnya bisa langsung mendownload menggunakan wget, namun saya tidak menemukan link direct downloadnya.

Version 12.1.0.2.0
Instant Client Package – Basic
Download oracle-instantclient12.1-basic-12.1.0.2.0-1.x86_64.rpm (62,587,782 bytes)
Instant Client Package – SQL*Plus
Download oracle-instantclient12.1-sqlplus-12.1.0.2.0-1.x86_64.rpm (852,271 bytes)
Instant Client Package – SDK
Download oracle-instantclient12.1-devel-12.1.0.2.0-1.x86_64.rpm (634,803 bytes)

Setelah terdownload, masuk ke direktori hasil downloadan

# cd /home
root@vmachine:/home#

Instal packages yang berekstensi .rpm tadi dengan menggunakan bantuan package alien

# 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

Setelah itu export variabel environment oracle untuk mempermudah akses

# export ORACLE_HOME=/usr/lib/oracle/12.1/client64
# export LD_LIBRARY_PATH=$ORACLE_HOME/lib
# export PATH=$PATH:$ORACLE_HOME/bin
# nano /etc/ld.so.conf.d/oracle.conf && chmod o+r /etc/ld.so.conf.d/oracle.conf

dan tambahkan baris berikut

export LD_LIBRARY_PATH=/usr/lib/oracle/12.1/client64/lib/${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}

Jika terjadi error /sbin/ldconfig.real: /usr/lib/oracle/12.1/client64/lib/${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH} is not a known library type maka silahkan ubah teks oracle.conf di atas menjadi

/usr/lib/oracle/12.1/client64/lib/

Terima kasih kepada saudara Muhammad Bima

Akhiri dengan menyimpan (Ctrl+X) kemudian Y

# nano /etc/profile.d/oracle.sh && chmod o+r /etc/profile.d/oracle.sh

dan tambahkan baris berikut

export ORACLE_HOME=/usr/lib/oracle/12.1/client64

Akhiri dengan menyimpan (Ctrl+X) kemudian Y

Setelah itu jalankan ldconfig

# ldconfig

b. OCI8 PHP 5.6

Pertama kali kita perlu menginstal PECL dan dependencies nya

# apt-get install php-pear php5-dev libaio1 build-essential php5.6-xml php5.6-dev

Setelah itu kita menjalankan script PECL untuk menginstal OCI 8

# pecl install -Z oci8-2.0.11

Saat instalasi akan ditanyakan Oracle Home Directory, isi dengan lokasi instalasi oracle client

'instantclient,/usr/lib/oracle/12.1/client64/lib'

kita menggunakan oci8 versi 2.0.11 karena versi tersebut mendukung PHP 5.2 – 5.6 menurut situs resminya.

Setelah selesai instalasi OCI8 kita perlu mendaftarkan extension OCI8 ini ke PHP

# locate php.ini
/etc/php/5.6/apache2/php.ini
/etc/php/5.6/cli/php.ini
# echo "extension=oci8.so" >> /etc/php/5.6/apache2/php.ini
# echo "extension=oci8.so" >> /etc/php/5.6/cli/php.ini

4. Cek instalasi

Restart server Apache

# service apache2 restart

buat sebuah file php di direktori webserver

$ cd /var/www/html
$ nano tesoci.php

isi dengan script untuk mengetes koneksi ke server oracle, misal

<?php
$OracleListener = "www.iporacleserveranda.com:1521/SID";
$OracleUsername = "user";
$OraclePassword = "password";
$conn = oci_connect($OracleUsername, $OraclePassword, $OracleListener);
if (!$conn) {
$e = oci_error();
echo $e;
}
$sql = "SELECT * FROM MY_TABLE_NAME";
$stmt = oci_parse($conn, $sql);
oci_execute($stmt);
$row = oci_fetch_array($stmt, OCI_ASSOC+OCI_RETURN_NULLS);
foreach ($row as $item) {
echo $item;
}
?>

Setelah itu tes dengan mengakses halaman tersebut melalui browser

http://www.webserverandayangbarusajadibuat.com/tesoci.php

 

Sekian, jika ada pertanyaan silahkan saja kirimkan melalui kolom komentar di bawah.

 

Sumber:

  • https://www.digitalocean.com/community/tutorials/how-to-install-linux-apache-mysql-php-lamp-stack-on-ubuntu
  • http://askubuntu.com/questions/756181/installing-php-5-6-on-xenial-16-04
  • https://help.ubuntu.com/community/Oracle%20Instant%20Client
  • http://www.dangtrinh.com/2014/07/how-to-install-oci8-php-extension-in.html
  • https://pecl.php.net/package/oci8
  • http://serverfault.com/questions/589877/pecl-command-produces-long-list-of-errors

 

 

Leave a Reply

Your email address will not be published.