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

Oracle Discussion :

Pb Connexion Oracle php5 et IIS6


Sujet :

Oracle

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 35
    Points : 29
    Points
    29
    Par défaut Pb Connexion Oracle php5 et IIS6
    Bonjour,

    J'avais un serveur NT 2000 avec IIS5, PHP 4 et un client Oracle 9.2 pour attaquer une base oracle 10g. Tout fonctionnait parfaitement.

    Le serveur a été réinstallé avec Windows 2003 Server, IIS6, PHP5 et le client oracle 10G. J'ai suivi les conseils de l'excellent tutoriel présent sur ce site. IIS fonctionne, PHP également mais j'ai un plantage pour l'accès à Oracle. Aurais-je oublier un truc ?

    Warning: ocilogon() [function.ocilogon]: OCIEnvInit() failed. There is something wrong with your system - please check that ORACLE_HOME is set and points to the right directory in D:\TPY_STAT_WEB\commun\connexion.php on line 39
    Je précise que j'ai défini une variable d'environnement ORACLE_HOME qui pointe sur d:\oracle10g où est installé le client oracle.

    D'habitude, une recherche sur Google suffit pour résoudre mon problème, mais là j'ai l'impression que ma config est peu courante!

    Phig

  2. #2
    Membre chevronné Avatar de denisys
    Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    1 140
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 140
    Points : 2 008
    Points
    2 008
    Par défaut
    8.88.20 oci_connect()
    Etablit une connexion avec un serveur Oracle
    [ Exemples avec oci_connect ] PHP 5

    Description

    resource oci_connect ( string username , string password , string db , string charset , int session_mode )
    oci_connect retourne une ressource de connexion Oracle, nécessaire à la plupart des appels OCI. username est le nom d'utilisateur et password est le mot de passe utilisés durant l'identification. Le troisième paramètre db , optionnel, contient le nom de l'instance locale d'Oracle, ou le nom de l'entrée dans le fichier tnsnames.ora auquel vous voulez vous connecter. Si le troisième paramètre optionnel db n'est pas spécifié, PHP va utiliser la variable d'environnement ORACLE_SID ( Oracle instance ) ou TWO_TASK ( tnsnames.ora ) pour déterminer la base à laquelle se connecter.

    Le paramètre session_mode est disponible depuis la version 1.1 et accepte les valeurs suivantes : OCI_DEFAULT , OCI_SYSOPER et OCI_SYSDBA . Si OCI_SYSOPER ou OCI_SYSDBA est spécifié oci_connect tentera d'établir une connexion privilégiée en utilisant des crédances externes. Les connexions privilégiées sont désactivées par défaut. Pour les activer, vous devez définir oci8.privileged_connect à On.

    Note
    Si vous utilisez PHP avec le client Instant Oracle, vous pouvez utiliser la méthode de nommage facile de connexion tel que décrit ici : http://download-west.oracle.com/docs/cd/B12037_01/network.101/b10775/naming.htm#i498306 . Basiquement, cela signifie que vous pouvez spécifier "//db_host[:port]/database_name" en tant que nom de base de données. ais, si vous voulez utiliser l'ancienne méthode de nommage, vous devez définir soit ORACLE_HOME , soit TNS_ADMIN .

    Note
    Le second appel ainsi que les suivants à la fonction oci_connect avec les mêmes paramètres retournera le gestionnaire de connexion retourné lors du premier appel. Cela signifie que les requêtes envoyées sur un gestionnaire seront également envoyées aux autres gestionnaires, car c'est le même gestionnaire. Ce comportement est démontré dans l'exemple 1 ci-dessous. Si vous avez besoin de deux gestionnaires isolés transactionnellement, vous devez utiliser la fonction oci_new_connect à la place.


    Si vous utilisez un serveur Oracle version 9.2 et suivant, vous pouvez renseigner le paramètre charset , qui peut être utilisé dans la nouvelle connexion. Si vous utilisez un serveur Oracle inférieur à la version 9.2, ce paramètre sera ignoré et la variable d'environnement NLS_LANG sera utilisé à la place.

    Exemple avec oci_connect
    <?php
    echo '<pre>';
    $db = '';

    $c1 = oci_connect("scott", "tiger", $db);
    $c2 = oci_connect("scott", "tiger", $db);

    function create_table($conn)
    {
    $stmt = oci_parse($conn, "create table scott.hallo (test varchar2(64))");
    oci_execute($stmt);
    echo $conn . " created table\n\n";
    }

    function drop_table($conn)
    {
    $stmt = oci_parse($conn, "drop table scott.hallo");
    oci_execute($stmt);
    echo $conn . " dropped table\n\n";
    }

    function insert_data($conn)
    {
    $stmt = oci_parse($conn, "insert into scott.hallo
    values('$conn' || ' ' || to_char(sysdate,'DD-MON-YY HH24:MI:SS'))");
    oci_execute($stmt, OCI_DEFAULT);
    echo $conn . " inserted hallo\n\n";
    }

    function delete_data($conn)
    {
    $stmt = oci_parse($conn, "delete from scott.hallo");
    oci_execute($stmt, OCI_DEFAULT);
    echo $conn . " deleted hallo\n\n";
    }

    function commit($conn)
    {
    oci_commit($conn);
    echo $conn . " committed\n\n";
    }

    function rollback($conn)
    {
    oci_rollback($conn);
    echo $conn . " rollback\n\n";
    }

    function select_data($conn)
    {
    $stmt = oci_parse($conn, "select * from scott.hallo");
    oci_execute($stmt, OCI_DEFAULT);
    echo $conn."----selecting\n\n";
    while (oci_fetch($stmt)) {
    echo $conn . " [" . oci_result($stmt, "TEST") . "]\n\n";
    }
    echo $conn . "----done\n\n";
    }

    create_table($c1);
    insert_data($c1); // Insertion d'une ligne via c1
    insert_data($c2); // Insertion d'une ligne via c2

    select_data($c1); // Résultat des insertions
    select_data($c2);

    rollback($c1); // Annulation sur c1

    select_data($c1); // Les deux insertions ont été annulées
    select_data($c2);

    insert_data($c2); // Insertion d'une ligne via c2
    commit($c2); // Validation via c2

    select_data($c1); // Le résultat de c2 est retourné

    delete_data($c1); // Effacement de toute la table via c1
    select_data($c1); // Aucune ligne de trouvée
    select_data($c2); // Aucune ligne de trouvée
    commit($c1); // Validation via c1

    select_data($c1); // Aucune ligne de trouvée
    select_data($c2); // Aucune ligne de trouvée

    drop_table($c1);
    echo '</pre>';
    ?>


    oci_connect retourne FALSE si une erreur survient.

    Note
    Dans les versions de PHP antérieures à la version 5.0.0, vous devez utiliser la fonction ocilogon . Cet ancien nom est toujours utilisable : un alias a été fait vers la fonction oci_connect , pour assurer la compatibilité ascendante. Toutefois, il est recommandé de ne plus l'utiliser.


    Voir aussi oci_pconnect , oci_new_connect et oci_close .

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 35
    Points : 29
    Points
    29
    Par défaut
    J'ai changé ocilogon par oci_connect mais l'erreur reste la même.
    Bon, je vais tenter d'autres modifs au niveau de mon tnsnames ou des paramètres du connect. Si rien ne change, je referai un tour sur le forum !

  4. #4
    Membre chevronné Avatar de denisys
    Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    1 140
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 140
    Points : 2 008
    Points
    2 008
    Par défaut
    Est-ce que en mode ligne de commande la connexion s’établie ??????.
    Tu inclue le chemin amenant jusqu'à l’exécutable php.exe dans la variable PATH.
    Puis par un simple script de connexion de type :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <?
    if($connect=oci_connect("scott", "tiger", $db))
      {
     printf("connexion réussis");
       }
       else
        {
           printf("connexion echoué");
        }
    ?>
    A cela , après l’affectation de l’exécutable php.exe dans la variable PATH , tu reboot la bécane ..
    Puis dans une fenêtre dos-windows , tu lance la commande
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    php -q \lechemin du script\le script.php
    Bien évidemment tu arrange scott,tiger, $db a ta connexion !!!

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 35
    Points : 29
    Points
    29
    Par défaut
    Dans le doute j'ai remis php4 et j'ai toujours un warning à la connexion.
    ocilogon(): _oci_open_server: in ...
    Normallement, ce warning devrait être suivi d'un code erreur oracle mais là je n'ai rien donc je ne sais pas ce qui se passe.
    Pour info, php est configuré dans IIS en mode ISAPI et non pas en mode CGI. SQLplus fonctionne parfaitement donc pas d'erreur dans le tnsname.ora. J'ai déplacé les dll et php.ini aux bons endroits. Bref, j'ai suivi la procédure à la lettre.
    Ok, sinon je vais tester ton script.

    Phig

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 35
    Points : 29
    Points
    29
    Par défaut
    du nouveau !
    j'ai essayé ton script, et la connexion marche sans problème (j'ai remis ocilogon de php4 au lieu de oci_connect).
    mais par le web, ça marche pas !
    bon, je vais essayer php en mode cgi, on verra bien ...

  7. #7
    Membre chevronné Avatar de denisys
    Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    1 140
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 140
    Points : 2 008
    Points
    2 008
    Par défaut
    Tu a bien suivie ce tuto :
    http://odelmotte.developpez.com/tuto.../iis6phpmysql/
    ??????????????????????????????????????????????????????
    Il y a également un petit piége .
    Test ce script là

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    < ?php
    phpinfo() ;
    ?>
    Exactement et dis moi si cela s’affiche

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 35
    Points : 29
    Points
    29
    Par défaut
    oui oui c'est le tutoriel que j'ai suivi à la lettre.
    tu parles de piège ? où ça ?
    sinon ça remarche, en fait j'ai rajouté ça dans ma fonction de connexion :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Putenv("ORACLE_HOME=d:\oracle");
    c'est bizarre car j'avais bien configuré ma variable d'environnement directement sur windows ?!? d'ailleurs avec ton script en ligne de commande, la connexion avait réussi ?
    Au final, ma config est la suivante : Client oracle 9.2 + IIS 6 + php 4 en mode isapi.
    merci

    Phig

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 02/12/2005, 04h28
  2. Connexion à Oracle Entreprise Manager
    Par black_code dans le forum Entreprise Manager
    Réponses: 4
    Dernier message: 11/11/2005, 14h29
  3. Connexion à Oracle depuis EXCEL
    Par Megaxel dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 07/10/2005, 12h04
  4. connexion oracle - choix d'architecture et langage
    Par ludvo dans le forum Général Conception Web
    Réponses: 8
    Dernier message: 13/09/2005, 21h33
  5. [Oracle] Pb connexion ORACLE (PHP5)
    Par Mikl dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 19/05/2005, 19h23

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