PHP ye ORACLE 8i destegi
Ismail YENIGUL <ismail@EnderUNIX.ORG>

Bu dokumanda kisaca php yi  oracle destegi ile nasil derlenecegini anlatacagim.

Bu dokumani yazmanin sebebi; php ye  oracle 8i   destegi vermem gereken bir solaris 2.6 makina vardi ve php yi oracle ile derlemek icin bayagi ugrasmak zorunda kaldim. Sonuca internet te uzun suren aramalardan sonra varabildim.

Konfigurasyon olarak 

* ORACLE 8.1.6
* PHP 4.0.6
* Apache 1.3.19(Daha onceden kurulu)

Kuracagim sistemde daha onceden apache kurulu idi o yuzden php ye oracle destegi vermek icin asagidaki parametreleri kullandim.

./configure --with-oci8=/u01/app/oracle/product/8.1.6 --with-apxs=/www/bin/apxs --enable-track-vars  --with-oracle=/u01/app/oracle/product/8.1.6 

apache onceden kurulu idi ve apxs programi /www/bin/apxs  de idi,  buradaki   /u01/app/oracle/product/8.1.6 ise benim oracle lin kurulu oldugu $ORACLE_HOME dizinidir siz kendi $ORACLE_HOME adresine gore degistiriniz.

sonuc olarak asagidaki hatayi aldim.

checking for Oracle-OCI8 support... yes
checking Oracle Install-Dir... /u01/app/oracle/product/8.1.6/
+--------------------------------------------------------------------+
| Notice: |
| If you encounter <defunc> processes when using a local Oracle-DB |
| please recompile PHP and specify --enable-sigchild when configuring|
| (This problem has been reported un Linux using Oracle >= 8.1.5) |
+--------------------------------------------------------------------+
checking Oracle version... 7.3
configure: error: Unsupported Oracle version!

daha sonra  --enable-sigchild parametresini ekledim.

./configure --with-oci8=/u01/app/oracle/product/8.1.6 --with-apxs=/www/bin/apxs --enable-track-vars  --with-oracle=/u01/app/oracle/product/8.1.6  --enable-sigchild

 

checking for Oracle-OCI8 support... yes
checking Oracle Install-Dir... /u01/app/oracle/product/8.1.6/
checking Oracle version... 7.3
configure: error: Unsupported Oracle version!

bu seferde yukaridaki hatayi aldim. 

arastirmalarim sonucu sorunun php-4.0.6.tar.gz ile gelen configure dosyasinda oldugunu ogrendim. aslinda php nin sorunu degil. biraz oracle in sorunu  cunku oracle firmasi oracle 8.1.5 den sonra versiyon bilgilerinin   oldugu $ORACLE_HOME/orainst/unix.rgs  dosyasinda degisiklik yapmistir. php de bu dosyaya bakarak oracle versiyonunu ogreniyordu. bu dosyadanda gerekli bilgileri alamadigi icin   configure: error: Unsupported Oracle version! hatasini veriyor.

COZUM:

  php-4.0.6/configure in  34050 -34068 satirlari arasina # koyarak bu satirlari iptal edin. ve 34070. satira ORACLE_VERSION=8.1 yazin

#echo $ac_n "checking Oracle version""... $ac_c" 1>&6 (34050. satir)
#echo "configure:34052: checking Oracle version" >&5
#if test -s "$ORACLE_DIR/orainst/unix.rgs"; then
#ORACLE_VERSION=`grep '"ocommon"' $ORACLE_DIR/orainst/unix.rgs | sed 's/ */:/g' | cut -d: -f 6 | cut -c 2-4`
#test -z "$ORACLE_VERSION" && ORACLE_VERSION=7.3
#elif test -f $ORACLE_DIR/lib/libclntsh.s?.8.0; then
#ORACLE_VERSION=8.1
#elif test -f $ORACLE_DIR/lib/libclntsh.s?.1.0; then
#ORACLE_VERSION=8.0
#elif test -f $ORACLE_DIR/lib/libclntsh.a; then
#if test -f $ORACLE_DIR/lib/libcore4.a; then
#ORACLE_VERSION=8.0
#else
#ORACLE_VERSION=8.1
#fi
#else
#{ echo "configure: error: Oracle needed libraries not found" 1>&2; exit 1; }
#fi
 #echo "$ac_t""$ORACLE_VERSION" 1>&6 (34068. satir)

 ORACLE_VERSION=8.1 #(34070. satir)

ayni sekilde  31537 ve  31555 satirlari arasina # koyun ve 31556 satira OCI8_VERSION=8.1  ifadesini yazin.

31537 echo $ac_n "checking Oracle version""... $ac_c" 1>&6
31538 echo "configure:31539: checking Oracle version" >&5
31539 if test -s "$OCI8_DIR/orainst/unix.rgs"; then
31540 OCI8_VERSION=`grep '"ocommon"' $OCI8_DIR/orainst/unix.rgs | sed 's/ */:/g' | cut -d: -f 6 | cut -c 2-4`
31541 test -z "$OCI8_VERSION" && OCI8_VERSION=7.3
31542 elif test -f $OCI8_DIR/lib/libclntsh.s?.8.0; then
31543 OCI8_VERSION=8.1
31544 elif test -f $OCI8_DIR/lib/libclntsh.s?.1.0; then
31545 OCI8_VERSION=8.0
31546 elif test -f $OCI8_DIR/lib/libclntsh.a; then
31547 if test -f $OCI8_DIR/lib/libcore4.a; then
31548 OCI8_VERSION=8.0
31549 else
31550 OCI8_VERSION=8.1
31551 fi
31552 else
31553 { echo "configure: error: Oracle-OCI8 needed libraries not found" 1>&2; exit 1; }
31554 fi
31555 echo "$ac_t""$OCI8_VERSION" 1>&6

OCI8_VERSION=8.1 #(3156. satir)

 

#make clean 
#./configure --with-oci8=/u01/app/oracle/product/8.1.6 --with-apxs=/www/bin/apxs --enable-track-vars        --with-oracle=/u01/app/oracle/product/8.1.6  --enable-sigchild
#make
#make install

komutlari ile php yi oracle destegini vermis olursunuz.
daha sonra httpd.conf a  

AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps

ifadelerini ekleyin. apache yi restart etmeden once

#export $LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/u01/app/oracle/product/8.1.6/lib

komutunu vererek oracle in $ORACLE_HOME/lib dizinide LD_LIBRARY_PATH e ekleyin ($ORACLE_HOME parametresini sizin oracle home dizini ile degistirin. ornegin: /u01/app/oracle/product/8.1.6/lib)
aksi takdirde apache yi restart yaptiginizda oracle lib leri bulamadigi icin hata mesaji alacaksiniz.
su andan itibaren php yi oracle destegi ile kullanabilirsiniz.

Ismail YENIGUL <ismail@EnderUNIX.ORG>

EnderUNIX Software Development Team Uyesi