Building Apache with PHP, MySQL, OCI8 instant client support

Author:    Nayyar Ahmad

Contact:    nayyares AT gmail DOT com  |  nayyar.ahmad AT cilix DOT co DOT mz

Homepage:  www.cbtcandy.org  

Dedication:   To Babu, in his loving memories.

Preface: 

There are many howtos on building Apache with PHP, MYSQL support, but it is very rare to find some document on OCI8 support with Apache Build, recently I was building a web server in my data center and I was really in trouble when I was searching some installation document, there are few documents , but most of them are using either RPM version of packages or they are missing some of the essential steps. I am trying to write a howto that will help you to at least understand the installation with step-by-step method.

 Plateform:

I am using IBM x system x86_64 bit server with RHEL 4 Update Level 4.

So it begins :

1.Download Oracle Instant Client.

First of all you have to download Oracle Instant Client, here is the link to download it, I am downloading for Linux x86_64, you can adjust according to your hardware.

Here is the link where you can find exact Installer for your hardware.

http://www.oracle.com/technology/software/tech/oci/instantclient/index.html

As I am doing it on Linux x86_64, so i will use following link:

http://www.oracle.com/technology/software/tech/oci/instantclient/htdocs/linuxx86_64soft.html

Here you have to download following packges.

1. instantclient-basic-linux-x86-64-10.2.0.2-20060228.zip

2. instantclient-sqlplus-linux-x86-64-10.2.0.2-20060228.zip

3. instantclient-sdk-linux-x86-64-10.2.0.2-20060228.zip

After downloading to your local directory you have to unzip them, as:

$ cd $HOME

assuming you have downloaded in your user home.

$ unzip instantclient-basic-linux-x86-64-10.2.0.2-20060228.zip

$ unzip instantclient-basic-linux-x86-64-10.2.0.2-20060228.zip

$ unzip instantclient-sdk-linux-x86-64-10.2.0.2-20060228.zip

These will unzip to $HOME/instantclient_10_2.

Create the client library symbolic link:

$ ln -s $HOME/instantclient_10_2/libclntsh.so.10.1 $HOME/instantclient_10_2/libclntsh.so

2. Setting up enviroment:

If you are installing all this from oracle user who is suppose to be owner of your database server then you have to make changes in oracle user .bash_profile, it is most likely that you have DB Server and Apache on same server then you might have set some of the variables otherwise you have to write them in oracle .bash_profile, but some time you may have a situation where your Web Server i.e. Apache Server is seperate then Oracle DB Server, I mean both of them are on seperate servers (machines) then you will just need to add LD_LIBRARY_PATH variable in your current user .bash_profile, i.e. the user who is installing all this here.

Now if you are installing through oracle user :

$ vi $HOME/.bash_profile

and add/edit following lines,

export ORACLE_HOME=/path/to/your/installdir
export ORACLE_BASE=/base/dir
export ORACLE_OWNER=user
export ORACLE_SID=database
export ORACLE_TERM=xterm
export TNS_ADMIN=/path/to/your/installdir/network/admin
export LD_LIBRARY_PATH=$HOME/instantclient_10_2/

But if you are not installing from oracle user, the case above discussed then:

$ vi $HOME/.bash_profile

and just this line:

export LD_LIBRARY_PATH=$HOME/instantclient_10_2/

Now are done with environment setup.

3. Installing Apache:

Now you have download Apache source to compile on your machine, here is the link to download:

http://httpd.apache.org/download.cgi

I am using Apache1.3. Now it depends on you, which apache version you wish to download, but still people recommend Apache1.3, and I will stick to this recommendation.

To open the Apache tar, change filename according to your apache release:

$ tar zxvf apache1.3....tar.gz
$ cd apache1.3...
$ ./configure --prefix=$HOME/apache --enable-so --with-mpm=prefork --with-port=8888

You can change port according to your need, even 80, but never try this on production server.

$ make
$ make install

Now we are done with Apache for now.

4. Installing PHP:

You can download your selected version of php source from,

http://www.php.net/downloads.php

My recommedation is PHP4.3.X I am using PHP 4.3.4 for my server. Now to open tar, do this:

$ tar zxvf php4.3.4..tar.gz
$ cd php4.3.4
$ ./configure --prefix=$HOME/php --with-apxs=$HOME/apache/bin/apxs --with-mysql=/usr --with-config-file-path=$HOME/apache/conf --with-oci8-instant-client=$HOME/instantclient_10_2 --enable-sigchild
$ make
$ make install
$ cp php.ini-recommended $HOME/apache/conf/php.ini

Add these lines to the $HOME/apache/conf/httpd.conf file:

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

Restart Apache:

$ $HOME/apache/bin/apachectl start

To check the extension is configured, create a simple PHP script phpinfo.php where the web server can read it.

<?php
  phpinfo();
?>

Load the script into a browser using an "http://" URL. The browser page should contain an "oci8" section saying "OCI8 Support enabled".

Share this page:

1 Comment(s)

Add comment

Comments

From:

It is not recommended to install PHP 4.  Use PHP 5.2 instead. There was extensive re-factoring of the oci8 extension done in PHP 5.1.2.  These changes stabilize and optimize the extension. Note the options to "configure" changed slightly - see my installation guide.

There is a lot of information on Oracle and PHP available on http://www.oracle.com/technology/tech/php/index.html including a note (written by me) on installing PHP with Oracle Instant Client: http://www.oracle.com/technology/pub/notes/technote_php_instant.html

For readers stuck with PHP 4, you can use the latest version of the extension by downloading it from http://pecl.php.net/package/oci8 or http://pecl4win.php.net/ext.php/php_oci8.dll

 -- cj