Centos 7.7 (1908) de Oracle client (11.2) kurulumu ve Php 5.4 ile baglanti saglanmasi.

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;

oracle client test baglantisi.

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

Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Connecting to %s