bonjour,

j'en reviens toujours en ce moment, a php et oracle. j'ai l'impression que oci8 n'est pas pris en compte dans l'envirement de php. je ne peux me connecter a une base oracle, il ne fait rien du tout.

Quand je fais un phpinfo(); il me dit juste ca a propos de oci8 :
additional .ini files parsed     /etc/php.d/mbstring.ini, /etc/php.d/mysql.ini, /etc/php.d/mysqli.ini, /etc/php.d/oci8.ini, /etc/php.d/pdo.ini, /etc/php.d/pdo_mysql.ini, /etc/php.d/pdo_oci.ini, /etc/php.d/pdo_sqlite.ini
Il me semble que je devrai avoir un paragraphe entier dedier a oci8.

voici ma configuration et mes infos
FC4 à jour
oracle-instantclient-basic-10.2.0.1-1
oracle-instantclient-sqlplus-10.2.0.1-1
php-pear-1.4.5-2.fc4.remi
php-pdo-5.1.1-2.fc4.remi
php-mysql-5.1.1-2.fc4.remi
php-5.1.1-2.fc4.remi
php-oci8-5.1.1-2.fc4.remi
php-mbstring-5.1.1-2.fc4.remi

un fichier /etc/profile.d/oracle.sh
if [ $USER != "oracle" ]
then
        export ORACLE_HOME=/usr/lib/oracle/10.2.0.1/client
        export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
fi
export TNS_ADMIN=/etc
et voici le code que j'execute:
<?php

$user = $_POST['user'];
$passwd= $_POST['passwd'];

echo "le user est $user";
echo "le mot de passe est $passwd";

$host = "(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=".$_POST['machine'].
     ")(PORT=".$_POST['port']."))(CONNECT_DATA=(SERVICE_NAME=".$_POST['sid'].")))";

echo "$host";
$conn1 = ocilogon($user,$passwd,$host);

if (!$conn1) {
    echo "L'utilisateur $user n'a pu se connecter a la base";
    }else {
    echo "<BR>User : <B>$user</B> Connecte a la base <B>$host</B> version : <BR>";
    echo OCIServerVersion($conn1);
    }
?>
Les variables user, paswwd, port et sid sont issu d'un formulaire.
Mes echo me renvoie les bonnes valeurs.


EDIT: J'ai trouvé des erreurs dans la log de httpd:
[Thu Jan 05 09:51:49 2006] [notice] LDAP: SSL support unavailable
PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/lib/php/modules/oci8.so' - libclntsh.so.10.1: cannot open shared object file: No such file or directory in Unknown on line 0
PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/lib/php/modules/pdo_oci.so' - libclntsh.so.10.1: cannot open shared object file: No such file or directory in Unknown on line 0
je ne comprend pas:
J'ai bien le fichier /etc/ld.so.conf.d/oracle.conf qui est renseigné
par "/usr/lib/oracle/10.2.0.1/client"
Mon client oracle marche tres bien.
le fichier /usr/lib/php/modules/oci8.so existe.


et j'ai:
/opt/oracle/10.2/client_1/lib/libclntsh.so.10.1
/usr/lib/oracle/10.2.0.1/client/lib/libclntsh.so.10.1
Le premier correspond a un vrai client oracle en 10.2, utilisable qu'avec le user oracle.
Le deuxieme l'instantclient en 10.2
1/ si tu utilies le fichier /etc/ld.so.conf.d/oracle.conf, il faut penser à le recharger avec la commande ldconfig, puis, bien sur recharger apache (servive http restart, pas reload)

mais ce n'est pas idéal d'avoir ce fichier (global pour le système) si la même machine héberge aussi le serveur Oracle : les bibliothèques de l'instantclient risquent d'être prioritaires sur celles du client complet pour l'utilisateur Oracle.

2/ mise à jour de l'environnement d'apache

Une solution qui me semble plus propre dans ton cas et l'ajout de la variable LD_LIBRARY_PATH à la configuration du serveur apache en modifiant le fichier /etc/sysconfig/httpd (prévu pour et appelé par la script de lancement d'apache) :
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
ou même (encore plus simple) en appelant le script d'oracle ;
. /etc/profile.d/oracle.sh
A++
je pense qu'il a bien été rechargé, car j'ai rebooté ce matin. et l'installe date d'il y a quelque jours.

Est ce que je peux supprimer ce fichier /etc/ld.so.conf.d/oracle.conf si j'utilse /etc/profile.d/oracle.sh et le .bash_profile d'oracle, pour gerer les deux environements client d'oracle ?


je vais mettre en place ta solution d'appeler le script /etc/profile.d/oracle.sh dans /etc/sysconfig/http.
linux72 a écrit:
Est ce que je peux supprimer ce fichier /etc/ld.so.conf.d/oracle.conf...
Oui, c'est même préférable.

A+
Merci pour les infos, cela marche tres bien, maintenant.
Mais reste dans le coin, j'aurai surement d'autre questions a te poser 😉