To be able to access Oracle databases from PHP, you will need to have PHP compiled / linked with the Oracle OCI (oci8) library.

You could use the [[http://www.oracle.com/technology/tech/php/zendcore/index.html|pre-built PHP 5 from Zend]] or there are two other ways to get PHP working with OCI8:

 1. Install the Oracle Database [Oracle10g] [Oracle9i]
 2. Install Oracle Instant Client

If your Oracle database is in another machine, the Oracle Instant Client is a smaller install.

== PHP using Oracle Database Server ==

TODO

== PHP using Oracle Instant Client ==

Tested Environments:

 * Ubuntu Server 10.04 LTS
 * Oracle Instant Client 11.2

 * Ubuntu 11.04 x64
 * Oracle Instant Client 11.2

Prerequisites:

{{{
sudo apt-get install build-essential
sudo apt-get install php5-dev php-pear libaio1
}}}

Instant Client installation requires some environment variables to be able to see the library folder. Edit /etc/environment and add at the end:

{{{
# Oracle Instant Client
LD_LIBRARY_PATH="/usr/local/lib/instantclient_11_2"
TNS_ADMIN="/usr/local/lib/instantclient_11_2"
ORACLE_BASE="/usr/local/lib/instantclient_11_2"
ORACLE_HOME=$ORACLE_BASE
}}}

Then download the [[http://www.oracle.com/technology/tech/oci/instantclient/index.html|Oracle Instant Client]] from Oracle ([[http://www.oracle.com/technetwork/topics/linuxsoft-082809.html|x86]] or [[http://www.oracle.com/technetwork/topics/linuxx86-64soft-092277.html|x86-64]]) (you will need to create an account).

You will need the Basic (48MB) and SDK (600K). The Basic Lite version does not work.

{{{
cd /usr/local/lib
sudo unzip <location-of-instant-client-basic>
sudo unzip <location-of-instant-client-sdk>
cd instantclient_11_2
sudo ln -s libclntsh.so.11.1 libclntsh.so
}}}

The symbolic link is needed during the compilation step later.

{{{
sudo pecl install oci8
}}}

You will be prompted for the location of the library:

{{{
instantclient,/usr/local/lib/instantclient_11_2
}}}

You will be prompted also for the ORACLE_HOME location, type 'all', accept and then insert:

{{{
instantclient,/usr/local/lib/instantclient_11_2
}}}



== PHP5 Instructions ==

You should now create a new oci8.ini file which will be included when loading php.ini (Editing the php.ini is discouraged):
{{{
nano /etc/php5/conf.d/oci8.ini
}}}
this will create a blank file; add to this file:
{{{
extension=oci8.so
}}}

In Ubuntu 13.10, you should create a new oci8.ini in:
{{{
nano /etc/php5/apache2/conf.d/oci8.ini
}}}
this will create a blank file.  Then add to this file:
{{{
extension=oci8.so
}}}


== Old Instructions (Maybe PHP4) ==

If successful, you may now add the following line at the bottom of php.ini

{{{
extension=oci8.so
}}}

The php.ini is found in 2 places: /etc/php5/apache2/php.ini and /etc/php5/cli/php.ini

{{{
sudo /etc/init.d/apache2 reload
}}}

or 
{{{
sudo service apache2 restart
}}}


Check {{{<?php echo phpinfo() ?>}}} to verify if the oci8 module is available.

== Further Reading ==

* [[http://www.orafaq.com/wiki/PHP|Oracle PHP Wiki]]