Table des matières

, ,

OCI8 : extension PHP pour les connexions avec Oracle

OCI8 est le nom de l'extension PHP permettant à ce langage Web de communiquer avec les bases de données Oracle de versions supérieures ou égales à 8.

Ajout des sources logicielles

Il vous faut ajouter la clé Oracle dans vos sources :

cd /tmp
sudo wget http://oss.oracle.com/el4/RPM-GPG-KEY-oracle
sudo apt-key add RPM-GPG-KEY-oracle

Puis, modifier les sources de mises à jour pour y ajouter le dépôt suivant :

deb http://oss.oracle.com/debian unstable main non-free

puis n'oubliez pas de recharger la liste des paquets.

Vous pouvez alors installer Oracle InstantClient (contenant accessoirement la commande sqlplus).

Le paquet demande un minimum de 1024 Mo de swap. Il ne seront pas utilisé, mais ils sont cependant indispensable pour l'installer.
Pour ajouter temporairement 1024Mo
su -
dd if=/dev/zero of=tmpswap bs=1M count=1000
chmod 600 tmpswap
mkswap tmpswap
swapon tmpswap

Installez les paquets php-pear php5-dev build-essential qui seront indispensables pour compiler l'extension, puis le paquet oracle-xe-client

Compiler et installer OCI8

Utilisez la commande pecl nouvellement installée, qui permet d'installer des extensions tierces à PHP :

sudo pecl install oci8
Si le serveur est déconnecté d'Internet, téléchargez l'extension OCI8 pecl à l'adresse suivante : http://pecl.php.net/package/oci8 et remplacez "oci8" par "oci8-XXXX.tgz" dans la commande précédente.

L'assistant vous posera une question sur l'emplacement des bibliothèques Oracle (OCI8-LIB). Vous répondrez tout d'abord all, puis il vous reposera la question et vous répondrez :

/usr/lib/oracle/xe/app/oracle/product/10.2.0/client

Puis Entrée. Enfin, appuyez encore une fois sur Entrée pour confirmer. Le processus de compilation devrait alors se passer convenablement et vous informer de sa réussite.

Configurer apache

Il ne vous reste plus qu'à ajouter cette extension dans le fichier de configuration de PHP 5 pour Apache, à savoir /etc/php5/apache2/conf.d/oracle.ini

extension=oci8.so

Redémarrez enfin Apache 2 :

FIXME un reload ne suffit pas ?
sudo /etc/init.d/apache2 restart

Vous devez également ajouter cette extension dans le fichier de configuration de /etc/php5/cli/php.ini sans quoi l'extension oci8.so ne sera pas prise en compte si vous exécutez un script php en ligne de commande

SQLPLUS par l'interpréteur de commande

Pour accéder à la commande sqlplus directement depuis votre interpréteur de commande, ajoutez dans le fichier /etc/environment le chemin suivant au $PATH :

PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/bin/X11:/usr/games:/usr/lib/oracle/xe/app/oracle/product/10.2.0/client/bin"

Par défaut, l'installeur ne crée pas le tnsnames.ora. Alors, créez le fichier /etc/tnsnames.ora à la main, par exemple comme ceci :

   EXEMPLE =
   (DESCRIPTION =
      (ADDRESS_LIST =
         (ADDRESS = (PROTOCOL = TCP)(HOST = dbserveur-distant )(PORT = 1521))
      )
      (CONNECT_DATA =
         (SERVICE_NAME = EXEMPLE)
      )
   )

faites un test :

sqlplus login_du_serveur_distant/mot_de_passe_du_serveur_distant@EXEMPLE