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 pre-built PHP 5 from Zend or there are two other ways to get PHP working with OCI8:
- Install the Oracle Database [Oracle10g] [Oracle9i]
- 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 Oracle Instant Client from Oracle (x86 or 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.