[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Sarge+php+client oracle 10.1.0.2



Je me réponds, pour partager l'information.

Il faut récupérer sur le site de ORACLE le sdk.
Dans mon cas, j'ai récupéré :
instantclient-basic-linux32-10.1.0.5-20060511.zip
instantclient-sdk-linux32-10.1.0.5-20060511.zip
instantclient-sqlplus-linux32-10.1.0.5-20060511.zip

unzip instantclient-basic-linux32-10.1.0.5-20060511.zip
unzip instantclient-sdk-linux32-10.1.0.5-20060511.zip
unzip instantclient-sqlplus-linux32-10.1.0.5-20060511.zip

Le sdk est nécessaire à la compilation du module oci8.so
On obtient tout ce dont nous avons besoin dans le répertoire instantclient10_1


su

#----------------------------------
# Récupération des sources de php
#----------------------------------
dkg -l | grep php
ii  php4-common    4.3.10-16.2    Common files for packages built from the php
ii  php4-domxml    4.3.10-16.2    XMLv2 module for php4
ii  php4-mysql     4.3.10-16.2    MySQL module for php4

apt-get source php4-common

#----------------------------------
# Récupération des dernières sources oci8 pour prendre en compte oracle9
#----------------------------------
Télécharger sur le site http://pecl.php.net/package/oci8 le paquet le plus à jour. La version actuelle est oci8-1.2.1.tgz
placer ce fichier dans php4-4.3.10/ext
rm -rf oci8
tar xzf oci8-1.2.1.TGZ
mv oci8-1.2.1 oci8

#----------------------------------
# Préparation des répertoires d'accueil du client et du sdk
#----------------------------------

mkdir /usr/lib/oracle/
mkdir /usr/lib/oracle/10.1.0.5
mkdir /usr/lib/oracle/10.1.0.5/client
mkdir /usr/lib/oracle/10.1.0.5/client/bin
mkdir /usr/lib/oracle/10.1.0.5/client/lib

#----------------------------------
# Mise en place du client et du sdk
#----------------------------------
cd instantclient10_1
cp -r * /usr/lib/oracle/10.1.0.5/client/lib
cd /usr/lib/oracle/10.1.0.5/client/lib
ln -s libclntsh.so.10.1 libclntsh.so   (on en a besoin lors de la génération du module oci8.so)

#----------------------------------
# Création d'un lien symbolique dans /usr/bin pointant sur l'exécutable de sqlplus.
#----------------------------------
mv sqlplus ../bin
cd /usr/bin
ln -s /usr/lib/oracle/10.1.0.5/client/bin/sqlplus

#----------------------------------
# Un petit test
#----------------------------------
sqlplus -V

SQL*Plus: Release 10.1.0.5.0 - Production

--> OK.

#----------------------------------
# Enregistrement des librairies du client pour qu'apache puisse les trouver
#----------------------------------

ajouter /usr/lib/oracle/10.1.0.5/client/lib  au fichier /etc/ld.so.conf
ldconfig

Pour controler :
ldconfig -v | grep libclnt
        libclntsh.so.10.1 -> libclntsh.so.10.1

#----------------------------------
# Génération du module oci8.so
#----------------------------------
cd php4-4.3.10
buildconf --force
./configure --with-oci8=shared,instantclient,/usr/lib/oracle/10.1.0.5/client/lib
make

#----------------------------------
# Mise en place du module
#----------------------------------

Dans le répertoire qui contient les libraires de php
cp modules/oci8.so /usr/lib/php4/libexec (par exemple)

#----------------------------------
# Prise en compte par PHP4
#----------------------------------
echo "extension=oci8.so" > /etc/php4/apache4/php.ini

#----------------------------------
# Redémarrer apache
#----------------------------------
/etc/init.d/apache2 restart

Lancer un script php contenant la commande phpinfo();, et vous devez voir apparaître le module oci8 dont l'état doit être enabled.


En conclusion, il est bien évident que cela tient plutôt de l'opération chirurgicale. Mais cela me permet de conserver les paquets Debian de Apache2 et PHP4.
Pour bien faire, il reste à fabriquer un paquet pour ce module OCI8. Mais là, je ne sais pas faire. Je suis preneur si quelqu'un sait .

Bonne journée,
Patrice.
2006/6/10, Patrice OLIVER < oliverp21@gmail.com>:
Bonsoir,

Je viens de tester le paquet php4-oci8 trouvé sur le net.
Les fonctions oci ne fonctionnent pas. Je ne sais pas pourquoi, alors qu'un phpinfo me dit que oci8 est supporté.

C'est aussi pour cela que je souhaite recompiler en refaisant un paquet debian, où faire un autre paquet oci8.



2006/6/10, Francescu GAROBY-COLONNA <windu.2b@gmail.com>:


2006/6/10, Patrice OLIVER <oliverp21@gmail.com>:
Bonsoir,

Bonsoir,

Sur une Debian Sarge, j'ai installé un client oracle 10.1.0.2.
J'ai aussi installé le paquet php v4.3.10-16

Je souhaite activer le module oci qui me permettra via instant client d'accéder à une base de données hébergée sur une machine de production.

J'ai lu un peu partout qu'il faut recompiler php. Confirmes-vous cela ?
Même si j'ai déjà compilé plusieurs fois php4, je souhaites plutôt rester dans la logique Debian et refaire un paquet avec l'option oracle activée, afin de pouvoir le redistribuer/réinstaller facilement si nécessaire. Je suis novice dans la création de paquets Debian, et dans la recompilation sauce Debian à partir des sources.

Qui d'entre vous peut m'aider ?

Un grand merci,
Patrice.

Euh, je vais surement dire une conn****, mais les paquets pour gérer les bases de données Oracle, ne marchent-ils pas aussi simplement que le paquet pour gérer MySQL? J'ai jamais testé donc je voudrais pas trop m'avancer... Cependant, la logique de Debian fait que tu as juste à installer le paquet et l'installeur configuer "tout-bien-comme-il-faut", et après redémarrage d'Apache, ca marche

--
Francescu GAROBY-COLONNA



Reply to: