Php Oracle OCI8

Se connecter en Php à une base Oracle via OCI8 sur Linux



Principe

Pour se connecter à une base Oracle en Php, il est nécessaire d'avoir le module OCI8.
Oracle supporte l'installation sur certaines distributions (Suse, RHeL ...) via un rpm,
ma slack n'étant pas particulièrement heureuse quand je lui fournis un .rpm, j'ai cherché un moyen de compiler soit même le module.
Ce tuto synthèse la compilation et l'installation d'Apache - Php - Oracle Instant Client - Php OCI8

Installation

Tout d'abord, il faut télécharger:
Quand tout ce beau monde est dans un repertoire ( dans mon cas /usr/src/ ), on peut commencer l'installation.

Instant Client Oracle:
unzip instantclient-basic-linuxXX-XX.X.X.X.zip
mv instantclient_XX-X/ /usr/lib/oracle
rm -R instantclient_XX-X/

unzip instantclient-sdk-linuxXX-XX.X.X.X.zip
cp -p instantclient_XX-X/sdk/ /usr/lib/oracle
rm -R instantclient_XX-X/

Maintenant que l'instant client et le sdk sont en place, il faut compiler apache et php:
Il ne faut pas hésiter à compiler apache et php selon ses propres besoins, lisez la doc!
J'installe cet apache/php dans /usr/local/apache2, mais vous pouvez mettre le prefix de votre choix.
Si vous avez déjà un apache/php d'installé, vérifiez ien que vous lancez le bon, ou désinstallez l'autre avant d'installer celui ci dans le même répertoire!

cd httpd/
./configure --enable-so --enable-dav-fs --enable-dav-lock --enable-dav --enable-rewrite --enable-ssl --enable-vhost-alias --prefix=/usr/local/apache2
make
make install
cd ..
rm -R httpd/

cd PHP/
./configure --with-apxs2=/usr/local/apache2/bin/apxs --with-mysql --prefix=/usr/local/apache2/php --with-config-file-path=/usr/local/apache2/php --disable-cgi --with-zlib --with-gettext --with-gdbm --enable-sockets --enable-mbstring=all --with-oci8=instantclient,/usr/lib/oracle
make
make install
cp -p ./libs/libphp5.so /usr/local/apache2/modules/
cp -p ./php.ini-production /usr/local/apache2/php/php.ini
cd ..
rm -R PHP/


Configuration

Il faut maintenant indiquer à apache comment utiliser php, pour cela il faut éditer le fichier httpd.conf (/usr/local/apache2/httpd.conf) et y placer les valeurs suivantes:
LoadModule php5_module        modules/libphp5.so
AddHandler php5-script php 

DirectoryIndex index.html index.php

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

Test

Lancement d'apache:
/usr/local/apache2/bin/apachectl start

Test de connexion php:
<?php
$tns			= ''; 
$username		= 'username'; 
$password		= 'passwd'; 

// Connexion à la base de donnée:
$db = oci_connect($username, $password, $tns); 

if (!$db) { 
      $e = oci_error();
      echo '<b><font color="red">CONNEXION IMPOSSIBLE</font></b> : ' . htmlentities($e[
        'message']); 
} else { 
    echo '<b><font color="green">CONNEXION REUSSIE!</font></b>'; 
    oci_close($conn); 
}
?>