Oracle client kurulumu:
1- Oncelikle https://www.oracle.com/database/technologies/instant-client/linux-x86-64-downloads.html sayfasindan kurulacak versiyonun belirlenmesi.
11.2 versiyonunun basic, devel ve sqlplus paketlerini indirip centos’un /tmp klasorune kopyaliyoruz.
2- Putty ile Centos’a bağlanıp, tmp klasöründeki oracle client rpm dosyalarını kuruyoruz;
rpm -Uvh oracle-instantclient11.2-*
3- “export LD_LIBRARY_PATH=/usr/lib/oracle/11.2/client64/lib/” komutuyla link olusturuyoruz.
4- /usr/lib/oracle/11.2/client64/bin/sqlplus PROISV/PROISV@//192.168.1.XXX:1521/XX komutuyla oracle clientin çalışıp çalışmadığını test ediyoruz. Eğer aşağıdaki gibi bir ekran geldiyse oracle client kurulumu tamamdır;

Php oci8 kurulumu:
1- Şimdi sıra, php den oracle db ye bağlanabilmemiz için oci8 paketini kurmaya geldi. Bunun için https://pecl.php.net/package/oci8 adresinden oci8-1.4.7.tgz paketini indirip centos /tmp klasorune kopyalayin.
2- Aşağıdaki komutları uygulayarak paketi kuralım;
tar -xzf oci8-1.4.7.tgz
cd oci8-1.4.7
phpize (eğer burda hata verirse, “php-devel” paketi kurulması gerekir kurulum komutu : yum install -y php-devel)
./configure –with-oci8=instantclient,/usr/lib/oracle/11.2/client64/lib
make install
Not : Son satırda kurulumda hata alırsanız, muhtemelen sistemde “gcc” yüklü değildir, “yum install -y gcc” ile yükleyebilirsiniz.
3- /etc/php.ini dosyasi acilir ve extension kısmına “extension=oci8.so” satırı eklenir, kaydedilip kapatılır.
4- “systemctl restart httpd” ile apache restart edilir.
5- Extensionun kurulup kurulmadığı “phpinfo.php” çalıştırılarak kontrol edilir. phpinfo.php içeriği;
<?php
phpinfo();
?>
Çıkan listede “oci8” varsa, extension kurulmuştur.
Son aşama olarak php den oracle db ye bağlanma ve test edilmesi;
<?php
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
$db = "(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.1.XXX)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=XX)))";
if($conn = OCILogon("PROISV", "PROISV", $db))
{
echo "Bağlandı.<br>";
}
else
{
$err = OCIError();
echo "Bağlanamadı. " . $err[text];
}
$stid = oci_parse($conn, 'SELECT * FROM XXX_XXX_RESERVATIONINFO WHERE ROWNUM <= 10');
oci_execute($stid);
while (($row = oci_fetch_array($stid, OCI_BOTH)) != false) {
echo "$row[2] $row[3] $row[5] $row[6] $row[7] $row[8] $row[9] $row[10]<br>";
}
oci_free_statement($stid);
oci_close($conn);
?>
Kod çalıştırıldığında ekrana 10 adet kayıt geliyorsa, Centos 7 ye kurduğumuz oracle client 11.2 ve php 5.4 ile bağlantımız tamamlanmıştır :))
Not1 : Centosta Selinux aktif ise, oracle bağlantıda hata verebilir. Eğer hata verirse aşağıdaki komutla bağlantı sağlanabilir;
setsebool -P httpd_can_network_connect on
veya; “sestatus” ile selinux durumuna bakılır. Current mode enforcing ise, “setenforce 0” ile selinux disable edilebilir. Tekrar enable etmek : “setenforce 1”
Kaynak : https://developer.oracle.com/dsl/technote-php-instant.html