Le but est de recompiler php pour activer le support d'oracle à travers oci8. La recompilation va fournir le module pour Apache 1.3 et 2. La méthode présentée utilise Debian et le client Oracle 10g.
Pour recompiler php, il faut récupérer les sources de php ainsi que les bibliothèques qui seront liées :
cd /usr/src apt-get install php4-dev apt-get source php4 apt-get install librecode-dev apache-dev apache2-prefork-dev chrpath debhelper \ freetds-dev po-debconf libbz2-dev libc-client-dev libcurl3-dev libdb4.2-dev \ libexpat1-dev libfreetype6-dev libgcrypt11-dev libgd2-xpm-dev libjpeg62-dev \ libkrb5-dev libldap2-dev libmcal0-dev libmhash-dev libmysqlclient12-dev \ libncurses5-dev libpam0g-dev libpcre3-dev libpng12-dev libsablot0-dev libsnmp5-dev \ libt1-dev libtool libwrap0-dev libxmltok1-dev libxml2-dev libxslt1-dev libzzip-dev \ re2c unixodbc-dev devscripts
Pour compiler avec le support de Postgresql :
apt-get install postgresql-dev
Il est nécessaire d'installer les bibliothèques du client Oracle. Ici on utilisera la dernière version disponible (10g) sur le serveur oss.oracle.com. Il faut que le client soit installé avant de lancer la compilation de php. Il faut donc modifier le fichier /etc/apt/sources.list
/etc/apt/sources.list
deb http://oss.oracle.com/debian unstable main non-free
apt-get install oracle-xe-client libaio
Si pas assez de swap RAM : 256 Mo mini, swap 1000 Mo mini (pas 999 Mo, ca ne marchera pas) :
dd if=/dev/zero of=/swapfile bs=1M count=600 mkswap /swapfile swapon /swapfile
Pour que le client Oracle fonctionne il faut déclarer quelques variables d'environnement, on peut les placer dans le fichier /etc/oracle/env.sh, puis on “sourcera” ce fichier au besoin :
/etc/oracle/env.sh
export ORACLE_HOME=/usr/lib/oracle/xe/app/oracle/product/10.2.0/client export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib export LD_PRELOAD=libclntsh.so.10.1
source /etc/oracle/env.sh
Ensuite il faut modifer le fichier /etc/ld.so.conf pour ajouter :
/etc/ld.so.conf
/usr/lib/oracle/xe/app/oracle/product/10.2.0/client/lib
Puis on met à jour les chemins :
ldconfig
cd /usr/src/php4-4.3.10
Dans le fichier debian/rules, il faut modifier la section nommée COMMON_CONFIG = […] et ajouter –with-oci8 aux règles de compilation.
Ensuite il faut mettre à jour le changelog et mettre quelque chose de parlant dans le numéro de version :
debchange -i
Il ne reste plus qu'a lancer la compilation :
cd /usr/src/php4-4.3.10-16 dpkg-buildpackage
Les .deb vont apparaître dans le répertoire /usr/src/. Pour les installer il suffit d'utiliser dpkg :
dpkg -i libapache-mod-php4_4.3.10-16.oracle_i386.deb php4-common_4.3.10-16.oracle_i386.deb php4-ldap_4.3.10-16.oracle_i386.deb
Une fois Apache, PHP et le client Oracle installé sur le machine finale, il faut configurer Apache afin qu'il connaise l'emplacement du client Oracle. Pour cela il faut éditer le script de démarrage d'Apache, /etc/init.d/apache et ajouter en haut :
/etc/init.d/apache
source /etc/oracle/env.sh
Ensuite il faut redémarrer Apache.
Souvent on obtient une erreur au démarrage d'Apache signalant que le fichier libclntsh.so.10.1 ne peut être chargé. Dans ce cas il faut vérifier que les variables d'environnement on bien été configurées dans le fichier /etc/init.d/apache et que $ORACLE_HOME/lib apparaît bien dans le fichier ld.so.conf et qu'il a bien été rechargé (ldconfig).