In this article, I will briefly describe how to compile PHP with ORACLE 8i support. When I tried to compile php with oracle support on Solaris 2.6, I received lots of problems. After tedious search on the internet, I have found a solution. I have following configuration:
Firstly unpack php as root:
 #tar zxvf php-4.0.6.tar.gz
 #cd php-4.0.6
Because apache is already installed, I want PHP to run as a dynamic Apache module. I ran the configure script as follows:
  ./configure --with-apxs=/www/bin/apxs --enable-track-vars \
              --with-oci8=/u01/app/oracle/product/8.1.6 \
              --with-oracle=/u01/app/oracle/product/8.1.6
This tells the configure script to build PHP as a shared Apache module and support for ORACLE. If your apxs path is different then /www/bin/apxs, replace /www/bin/apxs with your apxs path. Also /u01/app/oracle/product/8.1.6 is my $ORACLE_HOME path. If your $ORACLE_PATH is different replace /u01/app/oracle/product/8.1.6 with your $ORACLE_HOME path.
The first time I ran the configure script it has given following error:
 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!
After adding --enable-sigchild parameter:
 ./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
And then it gives this error:
 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!
After searching on the internet, I found that there is a bug in php-4.0.6/configure file. I've to clarify here that this bug is not due to the php package but ONLY due to Oracle changes after version 8.1.5.
Oracle decided to change the "orainst" directory name since version 8.1.5 to "install" in the $ORACLE_HOME directory. Therefore the script cannot open the file called "unix.rgs" there! The configure script can not find oracle version so it always returns 7.3 as ORACLE_VERSION.

SOLUTION:

In php-4.0.6/configure file, comment out (#) lines between 34050 - 34068. and then write manually ORACLE_VERSION=8.1 to line 34070.
#echo $ac_n "checking Oracle version""... $ac_c" 1>&6 (34050. line)
#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.line )
        ORACLE_VERSION=8.1
#(34070. line)
And also comment outlines between 31537 - 31555 and then write manually ORACLE_VERSION=8.1 to line 31556.
      # echo $ac_n "checking Oracle
        version""... $ac_c" 1>&6 (31537. line)
#echo "configure:31539: checking Oracle version"
        >&5
# if test -s "$OCI8_DIR/orainst/unix.rgs"; then
# OCI8_VERSION=`grep '"ocommon"'
        $OCI8_DIR/orainst/unix.rgs | sed 's/ */:/g' | cut -d: -f 6 | cut -c 2-4`
# test -z "$OCI8_VERSION" && OCI8_VERSION=7.3
# elif test -f $OCI8_DIR/lib/libclntsh.s?.8.0; then
# OCI8_VERSION=8.1
# elif test -f $OCI8_DIR/lib/libclntsh.s?.1.0; then
# OCI8_VERSION=8.0
# elif test -f $OCI8_DIR/lib/libclntsh.a; then
# if test -f $OCI8_DIR/lib/libcore4.a; then
# OCI8_VERSION=8.0
# else
# OCI8_VERSION=8.1
# fi
#else
# { echo "configure: error: Oracle-OCI8 needed libraries not
        found" 1>&2; exit 1; }
# fi
# echo "$ac_t""$OCI8_VERSION" 1>&6
OCI8_VERSION=8.1
#(3156. line)
And finally issue following commands to finish:
 #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
After adding following lines to httpd.conf file:
      AddType application/x-httpd-php .php
      AddType application/x-httpd-php-source .phps
And before restarting apache, apache must be told where ORACLE LIB directory is. To accomplish this:
 #export $LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/u01/app/oracle/product/8.1.6/lib
If your oracle lib dir is different than /u01/app/oracle/product/8.1.6/lib change this with your $ORACLE_HOME/lib and restart Apache by issuing the apachectl restart command.
is an BSD and Unix administrator from Turkey and a EnderUNIX software development team member. This article was previously published at http://www.enderunix.org/.