Building Apache with PHP, MySQL, OCI8 instant client support
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.
-
instantclient-basic-linux-x86-64-10.2.0.2-20060228.zip
-
instantclient-sqlplus-linux-x86-64-10.2.0.2-20060228.zip
-
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/instantclient102.
Create the client library symbolic link:
$ ln -s $HOME/instantclient102/libclntsh.so.10.1 $HOME/instantclient102/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 .bashprofile, 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 .bashprofile, 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 LDLIBRARYPATH 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 ORACLEHOME=/path/to/your/installdir
export ORACLEBASE=/base/dir
export ORACLEOWNER=user
export ORACLESID=database
export ORACLETERM=xterm
export TNSADMIN=/path/to/your/installdir/network/admin
export LDLIBRARYPATH=$HOME/instantclient102/
But if you are not installing from oracle user, the case above discussed then:
$ vi $HOME/.bash_profile
and just this line:
export LDLIBRARYPATH=$HOME/instantclient102/
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/instantclient102—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”.

