IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Erreur _oci_open_session lors du ocilogon [Oracle]


Sujet :

PHP & Base de données

  1. #1
    Membre confirmé Avatar de Devether
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2004
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2004
    Messages : 66
    Par défaut Erreur _oci_open_session lors du ocilogon
    Bonjour,

    J'ai un problème de connexion à ma base oracle mais je ne sais pas si ça vient de php, oracle ou linux.

    Mon script php fonctionne en local sous XP. Je me connecte à ma base oracle sans problème.
    Sur le serveur linux, j'ai deux comportements differents selon que je lance mon script en lignes de commandes (...]# php mon script.php) ou que je l'appel dans une page de mon site construit avec typo3.

    Sur mon site web il n'y a aucun problème, seulement ce script est destiné à être executé par cron une fois par jour. Quand je l'execute en ligne de commande, au moment de la connexion à la même base oracle (je n'en ai qu'une) il m'affiche le message d'erreur suivant :
    PHP Warning: ocilogon(): _oci_open_session: OCIHandleAlloc OCI_HTYPE_SVCCTX: OCI_INVALID_HANDLE in /home/user/sources/oracle.class.php on line 33
    A la ligne 33 il y a bien entendu mon ocilogon :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    $username	= "XXXXX";
    $password	= "YYYYYY";
    $db		= "MADB";
     
    $this->log_procedure("Connexion à la base ".$db);
     
    if (($this->connexion = ocilogon($username, $password, $db)) === FALSE) { // ligne 33
    	$this->log_procedure("Connexion impossible à ".$db);
    	$this->log_error(true);
    }
    else {
    	$this->log_procedure("Succès de connexion à la base ".$db);
    }
    en faisant des recherches j'ai remarqué que ce message d'erreur vient du fait que ORACLE_HOME n'est pas bien défini mais j'ai pourtant rien dans mon site web qui y fait référence et pourtant la connexion se fait bien.

    Y-a-t'il une différence dans l'execution de php en ligne de commande et par apache ? Où doit pointer ORACLE_HOME ? Un autre paramètre rentre-t-il en ligne de compte ?

    Merci d'avance,
    Devether

  2. #2
    Membre confirmé Avatar de Devether
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2004
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2004
    Messages : 66
    Par défaut
    J'ai fais un teste pour voir les différences en faisant un print_r($_ENV). J'ai supprimé toutes les lignes identiques en laissant le ORACLE_HOME

    Sur le site web :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Array
    (
        [LD_LIBRARY_PATH] => /usr/lib/oracle/10.2.0.1/client/lib
        [TNS_ADMIN] => /etc/oracle
        [PATH] => /sbin:/usr/sbin:/bin:/usr/bin:/usr/X11R6/bin
        [LANG] => fr_FR.UTF-8
        [SHLVL] => 2
        [_] => /sbin/initlog
        [ORACLE_HOME] => .
    )
    Sur le tty :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Array
    (
        [OLDPWD] => /home/user
        [PATH] => /usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin:/usr/NX/bin:/root/bin
        [LANG] => fr_FR.ISO-8859-1
        [SHLVL] => 1
        [_] => /usr/bin/php
        [ORACLE_HOME] => .
    )
    On voit bien que le LD_LIBRARY_PATH et le TNS_ADMIN ne sont pas définis lorsque j'execute depuis le tty.
    Même en ajoutant les lignes suivantes avant de faire le print_r() ça ne les ajoute pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    putenv("TNS_ADMIN=/etc/oracle");
    putenv("LD_LIBRARY_PATH=/usr/lib/oracle/10.2.0.1/client/lib");
    Y-a-t'il une autre commande que putenv() pour ajouter definir ces variables??

  3. #3
    Membre confirmé Avatar de Devether
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2004
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2004
    Messages : 66
    Par défaut
    J'ai trouvé une solution. Je vais quand même la notéee ici pour ceux qui auraient le même problème.

    J'ai fais un bash pour pouvoir definir mes variables d'environnement.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    #!/bin/sh
    ORACLE_HOME=/usr/lib/oracle/10.2.0.1/client
     
    LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib
     
    TNS_ADMIN=/etc/oracle
     
    export ORACLE_HOME LD_LIBRARY_PATH TNS_ADMIN
     
    php -q /home/user/sources/script.php
    Je ne sais pas si c'est très porpre mais au moins ça marche!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Message d'erreur Windows lors de l'exécution de l'appli D6-
    Par kolac dans le forum Bases de données
    Réponses: 4
    Dernier message: 07/12/2004, 17h55
  2. Réponses: 15
    Dernier message: 16/09/2004, 09h37
  3. [ACCESS] [JET] [ADO] Erreur 3000 lors d'un update
    Par Benjamin GAGNEUX dans le forum Bases de données
    Réponses: 5
    Dernier message: 26/08/2004, 21h16
  4. Question facile, erreur bizzare lors d'un Left, Top
    Par SpiderAlpha dans le forum C++Builder
    Réponses: 4
    Dernier message: 05/05/2004, 12h56
  5. Erreur windows lors du malloc
    Par Elessar dans le forum C
    Réponses: 5
    Dernier message: 16/12/2003, 08h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo