Php'ye Oracle Desteği Nasıl Verilir
6.5.10
Posted by Salih Giray
Php'ye oracle desteği verebilmek için oci8 extension'unun kurmak gerekiyor. Bu extension'u kurmak için de sisteme Oracle Instant Client kurulmalıdır. Instant Client olmadan Oracle'nin kendisi de kurularak bu iş yapılabilir ama sadece php'den oracle bağlantısı kurmak istiyorsanız en kolay çözüm bu olacaktır.
Bu sistemde Centos 5.4 x86_64 kurulmuştur. Ayrıca daha önce php derlenerek /usr/local/php-5.2.12 dizinine kurulmuştu. İlgili komutları yazarken kendi sisteminize göre değiştirmelisiniz.
İlk olarak Instant Client'i Oracle'nin sitesinden indirmeniz gerekiyor. Fakat bunu indirebilmek için OTN (Oracle Technology Network) hesabınız olması gerekiyor. Eğer OTN hesabınız yoksa bir şekilde oluşturmalı ya da hesabı olan birini bulmalısınız.
Instant Client'in basic ve sdk (ya da devel) paketlerini indirmeniz yeterli olacaktır. Fakat mutlaka işletim sisteminizin mimarisine uygun paketi indirmelisiniz. Eğer x86_64 işletim sisteminiz varsa kesinlikle i386 paketlerini indirmemelisiniz. Yoksa saatlerde problemi arayabilirsiniz.
http://www.oracle.com/technology/software/tech/oci/instantclient/index.htmlInstant client'i indirdikten sonra bunları bir dizine açmalı ve aşağıdaki şekilde linkleri oluşturmalısınız. Yoksa oci8 extension'unu kurarken hata alırsınız.
# mkdir /usr/local/oracle
# cd /usr/local/oracle
# unzip /tmp/oracle-instantclient11.2-basic-11.2.0.1.0-1.x86_64.zip
# unzip /tmp/oracle-instantclient11.2-sdk-11.2.0.1.0-1.x86_64.zip
# mv instantclient_11_2 instantclient
# cd instantclient
# ln -s libclntsh.so.11.1 libclntsh.so
# ln -s libocci.so.11.1 libocci.soDaha sonra /etc/ld.so.conf dosyasını açarak en altına instant client'in path'ını yani "/usr/local/oracle/instantclient" satırını yazmalı ve "ldconfig" komutunu çalıştırmalısınız. Böylece işletim sistemi oracle'inin kütüphanelerinin nerede olduğunu bilecektir.
Php'nin oci8 extension'unu indirmek için şu komut verilmelidir:
# cd /tmp
# /usr/local/php-5.2.12/bin/pecl download oci8
Starting to download oci8-1.4.1.tgz (149,097 bytes)
.................................done: 149,097 bytes
File /tmp/oci8-1.4.1.tgz downloadedBundan sonra indirilen paket aşağıdaki gibi açılarak derlenmeli ve kurulmalıdır:
# tar xfz oci8-1.4.1.tgz
# cd oci8-1.4.1/
# /usr/local/php-5.2.12/bin/phpize
# ./configure --with-oci8=instantclient,/usr/local/oracle/instantclient --with-php-config=/usr/local/php-5.2.12/bin/php-config
# make
# make installEğer configure komuru çalışırken "/usr/bin/ld: cannot find -lclntsh" şeklinde bir hata alıyorsanız ya linkleri oluşturmayı unutmuşya da x86_64 sistemde i386 instant client paketi kurmuşsunuzdur.
Son olarak php.ini dosyasını açarak şu satırı eklemelisiniz.
extension="oci8.so"Herşey düzgün gittiyse /usr/local/php-5.2.12/bin/php komutunu çalıştırdığınızda oci8'i extension listesinde görebilirsiniz:
# /usr/local/php-5.2.12/bin/php -m
[PHP Modules]
ctype
curl
date
dom
filter
gd
hash
iconv
json
libxml
mysql
oci8
pcre
PDO
pdo_sqlite
posix
Reflection
session
SimpleXML
sockets
SPL
SQLite
standard
tokenizer
xml
xmlreader
xmlwriter
zlib
[Zend Modules]
Değişikliklerin aktif hale gelmesi için apache restart edilmelidir.