Utiliser une base de données Oracle avec PHP | Babash

par francois · 29 mai 2015

La configuration d’un serveur Redhat pour exploiter une base de données Oracle est toujours compliquée.
Ici, je vous fait un petit résumé de ce que j’ai appliqué afin de faire tourner un script PHP qui interroge une base de donnée Oracle.

La solution classique est d’installer le client Oracle, OCI et d’utiliser PHP et PDO. Seulement, utiliser PDO avec le client Oracle nécessite d’installer le driver pdo_oci et là, la galère commence.

Dans ce tuto, je vais vous expliquer comment faire pour s’affranchir de l’installation de pdo_oci grâce à une superbe librairie nommée PDOOCI.

Avant de commencer…

J’ai réalisé cela sous une Redhat, avec le client 12.1 de Oracle. Je vous laisse donc remplacer les commandes « yum » par leurs équivalentes « apt » pour Debian/Ubuntu et de corriger la version 12.1 de Oracle par celle que vous utiliserez lorsque vous lirez ces lignes.

Client Oracle

Téléchargez les clients « basic » et « devel » Oracle depuis la page officielle de Oracle.

Notez que le client est pour un processeur 64bits. Si votre serveur est en 32bits, vous devrez télécharger les paquets x86.
Idem pour les rpm et les deb pour Redhat et Debian/Ubuntu.

Installation

Une fois téléchargés, installez les via la commande suivante:

rpm -Uvh oracle-instantclient12.1-devel-12.1.0.2.0-1.x86_64.rpm oracle-instantclient12.1-basic-12.1.0.2.0-1.x86_64.rpm

rpm -Uvh oracle-instantclient12.1-devel-12.1.0.2.0-1.x86_64.rpm oracle-instantclient12.1-basic-12.1.0.2.0-1.x86_64.rpm

Variables d’environnement

Tapez ceci :

ORACLE_HOME=/usr/lib/oracle/12.1/client64; export ORACLE_HOME LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib; export LD_LIBRARY_PATH

ORACLE_HOME=/usr/lib/oracle/12.1/client64; export ORACLE_HOME LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib; export LD_LIBRARY_PATH

Et ajoutez les dans le fichier « ~/.bash_profile » si vous souhaitez les conserver à la prochaine ouverture de session.

Une partie du fichier ressemblera donc à ceci :

Lire plus :   Xiaomi Mi Home et Yeelight compatibles Jeedom

# User specific environment and startup programs ORACLE_HOME=/usr/lib/oracle/12.1/client64; export ORACLE_HOME LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib; export LD_LIBRARY_PATH PATH=$PATH:$HOME/bin export PATH

# User specific environment and startup programs ORACLE_HOME=/usr/lib/oracle/12.1/client64; export ORACLE_HOME LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib; export LD_LIBRARY_PATH

Installation de PHP, PEAR, DEVEL et PDO

La version 12.1 d’Oracle nécessite d’avoir « php-pear » et « php-devel » dans une version de PHP supérieure à 5.2. Vérifiez leur présence et leur via cette commande :

Si cela ne convient pas, installez les, dans la version proposée par « yum », à savoir, pour ma part la 5.3 :

yum install php53-pear php53-devel

yum install php53-pear php53-devel

Sachez que pour la suite, nous aurons besoin de PDO, profitez en pour l’installer si besoin :

Installation de OCI

Tapez cette commande :

Peut être devrez- vous mettre à jour via la commande :

pecl channel-update pear.php.net

pecl channel-update pear.php.net

On vous demandera de renseigner le chemin vers le client oracle, entrez ceci :

instantclient,/usr/lib/oracle/12.1/client64/lib

instantclient,/usr/lib/oracle/12.1/client64/lib

Ajouter l’extension OCI à PHP

Ouvrez le fichier « php.ini » et ajoutez la ligne suivante pour activer OCI :

A présent, dans une installation classique, vous devriez installer le driver « pdo_oci ». C’est la partie la plus embêtante parce que pdo_oci date de 2005 et n’est plus à jour. Il faut modifier le fichier « config.m4 » avant de compiler, j’ai eu des erreurs etc.. bref, pas pratique du tout !

Pour ma part, j’ai trouvé sur Github, une classe PHP qui nous affranchi de cela :

Utilisation de la classe PHP PDOOCI

La classe PHP nommée PDOOCI permet d’interroger une base de données Oracle sans pdo_oci.

  1. Téléchargez donc les fichiers « pdooci.php » et « statement.php » depuis le dépôt Github,
  2. Placez les avec vos fichiers PHP,
  3. Faites appel au fichier « pdooci.php » via la commande PHP :
Lire plus :   OpenLDAP et Samba sous Debian 6 - Babash

Corrigez ensuite votre code PHP :

$pdo = new PDO(« oci:dbname=mydatabase;charset=utf8 », « user », « password »);

$pdo = new PDO(« oci:dbname=mydatabase;charset=utf8 », « user », « password »);

Par celui-ci :

$pdo = new PDOOCI\PDO(« mydatabase », « user », « password »);

$pdo = new PDOOCI\PDO(« mydatabase », « user », « password »);

A part cette ligne de connexion, le reste de votre code ne changera pas car il a été écrit et sera interprété par PDO, la couche d’abstraction.

Étiquettes : centosoraclepdopdoocipdo_ocipearpeclPHPphp-cliredhat

A lire également