Sunday, October 30, 2005

Installing Oracle 10g R2, Apache (2.0.54) and PHP (5.0.4) on CentOS 4.1 (RHEL 4 U1)

This article has been compiled from different pieces located in different places at OTN. My effort was only to bring
all stuff together, test it works and make easy to understand the core technology based on Instant-Client installation on the CentOS 4.1 Linux box already running Oracle10g R2 database server.Note,that if database TNSLISTENER port is different from 1521,port number should be specified in the connect string for sqlplus.

Instant Client allows you to run your applications without installing the standard Oracle client or having an ORACLE_HOME. OCI, OCCI, Pro*C, ODBC, and JDBC applications work without modification, while using significantly less disk space than before. Even SQL*Plus can be used with Instant Client. No recompile, no hassle.Customers can try new packaged applications and Oracle client features quickly without worrying about other installations. Larger enterprises can automate setup and configuration of Instant Client by using installation scripts accessing a central IT repository. Finally, everyone can benefit from the smaller footprint
Download from:-

Instant Client Package - Basic: All files required to run OCI, OCCI,
and JDBC-OCI Applications


Instant Client Package - SQL*Plus: Additional libraries and executable
for running SQL*Plus with Instant Client


Instant Client Package - SDK: Additional header files and an example makefile
for developing Oracle applications with Instant Client


Install PHP, Apache and Oracle Instant Client
Installing and testing Instant Client
Run as root:-

# rpm -Uvh oracle-instantclient-basic-
# rpm -Uvh oracle-instantclient-sqlplus-
# rpm -Uvh oracle-instantclient-devel-
# useradd -g oinstall -G dba orauser
# passwd orauser

Login as orauser.Test connection to the database:

$ export LD_LIBRARY_PATH= /usr/lib/oracle/
$ /usr/lib/oracle/ scott/drbrxa@//
SQL> exit

Installing and testing Apache
Login as your "orauser" user
Build Apache:

$ bzcat httpd-2.0.54.tar.bz2 tar xf -
$ cd httpd-2.0.54
$ ./configure --prefix=$HOME/apache --enable-so --with-mpm=prefork
$ make
$ make install

Edit $HOME/apache/conf/httpd.conf and change the port to 8888:
Listen hostname:8888
Start Apache:

$HOME/apache/bin/apachectl start

Start a browser and check that http://hostname:8888/ gives the
default Apache web page.
Stop Apache:

$HOME/apache/bin/apachectl stop

Installing and testing PHP
Build PHP:

$ bzcat php-5.0.4.tar.bz2 tar xf -
$ cd php-5.0.4
$ ./configure --prefix=$HOME/php --with-apxs2=$HOME/apache/bin/apxs --with-config-file-path=$HOME/apache/conf --with-oci8-instant-client= /usr/lib/oracle/ --enable-sigchild

$ make
$ make install
$ cp php.ini-recommended $HOME/apache/conf/php.ini

Edit php.ini and change display_errors to On:

display_errors = On

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

LD_LIBRARY_PATH should contains /usr/lib/oracle/ before
starting Apache
Test it all works
Create a file $HOME/apache/htdocs/phpinfo.php containing:


Load this file in a browser:


Check the value of LD_LIBRARY_PATH in the Environment section.
it should contain the Instant Client directory.
Check that there is a section "oci8" with OCI8 Support marked as


Create a file $HOME/apache/htdocs/test.php containing:


$conn = OCILogon("scott", "tiger", "//hostname:tns_listener_portnumber/orclraw");

if (!$conn) {

echo OCIServerVersion($conn) ."<br>\n";
print date('Y-m-d H:i:s')."<br><br>\n";

$query = 'SELECT * FROM EMP';

$stid = OCIParse($conn, $query);
OCIExecute($stid, OCI_DEFAULT);

print '<table border="1">';
while ($succ = OCIFetchInto($stid, $row, OCI_RETURN_NULLS)) {
print '<tr>';
foreach ($row as $item) {
print '<td>'.($item?htmlentities($item):' ').'</td>';
print '</tr>';
print '</table>';


Load this file in a browser: