Configuring PHP with ORACLE 8i Support
Ismail YENIGUL <[email protected]>
In This article i will briefly describe how to compile PHP with ORACLE 8i support
when i try to compile php with oracle support on Solaris 2.6 i got lots of problems. after tedious search in internet i have found solution. I have following configuration:
* ORACLE 8.1.6
* PHP 4.0.6
* Apache 1.3.19(Already Installed)
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.
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! |
It gives above error.
after searching in 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 ! Configure script can not find oracle version so it returns always 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 out lines 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 command 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 restart 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.
Ismail YENIGUL <[email protected]>
EnderUNIX Software Development Team Member