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 :

Connexion à une base oracle


Sujet :

PHP & Base de données

  1. #1
    Nouveau membre du Club
    Inscrit en
    Février 2007
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 35
    Points : 30
    Points
    30
    Par défaut Connexion à une base oracle
    bsr
    aprés la configuration pour permettre la connexion
    j'oubtiens le message suivant "le point d'entrée de procedure OCILobRead2 est introvable dans la bibliothèque de liaisons dynamique OCI.dll"
    Moi j'utilise PHP5 avec le serveur EasyPhp2.0 beta et oracle 9i
    que dois-je faire? help

  2. #2
    Membre régulier
    Profil pro
    Responsable informatique
    Inscrit en
    Juillet 2003
    Messages
    142
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Responsable informatique

    Informations forums :
    Inscription : Juillet 2003
    Messages : 142
    Points : 91
    Points
    91
    Par défaut
    Bonjour,

    La dernière fois que j'ai voulu mettre à jour PHP j'ai eu la même erreur et je n'ai pas trouvé de solution, je compte essayer cette semaine de mettre à jour php (et je vais donc surement rencontrer de nouveau le pb) donc si tu as trouvé une solution ... je suis preneur

  3. #3
    Membre régulier Avatar de docr1
    Profil pro
    Inscrit en
    Février 2007
    Messages
    74
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Février 2007
    Messages : 74
    Points : 76
    Points
    76
    Par défaut
    J'ai eu le meme probleme que vous.
    La solution la plus simple est de passer en php 4 car les librairie de php5 ne sont pas compatible avec les version des client inferieur a 10g.
    ( c'est ce que j'ai fait et ca marche nickel )

    Pour php5, j'ai lu qu'il s'était basé sur Oracle 10g pour créer les fonctions.

    La seconde solution est d'installer le client oracle 10g.

  4. #4
    Expert éminent
    Avatar de Lung
    Profil pro
    Analyste-programmeur
    Inscrit en
    Mai 2002
    Messages
    2 664
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste-programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 664
    Points : 6 967
    Points
    6 967
    Par défaut
    Citation Envoyé par docr1
    J'ai eu le meme probleme que vous.
    La solution la plus simple est de passer en php 4 car les librairie de php5 ne sont pas compatible avec les version des client inferieur a 10g.
    ( c'est ce que j'ai fait et ca marche nickel )

    Pour php5, j'ai lu qu'il s'était basé sur Oracle 10g pour créer les fonctions.

    La seconde solution est d'installer le client oracle 10g.
    Il suffit d'installer le client Oracle 10g, et c'est tout ?
    Il n'y a rien d'autre à faire ?

    L'urgent est fait, l'impossible est en cours, pour les miracles prévoir un délai. ___ Écrivez dans un français correct !!

    C++Builder 5 - Delphi 6#2 Entreprise - Delphi 2007 Entreprise - Delphi 2010 Architecte - Delphi XE Entreprise - Delphi XE7 Entreprise - Delphi 10 Entreprise - Delphi 10.3.2 Entreprise - Delphi 10.4.2 Entreprise - Delphi 11.1 Entreprise
    OpenGL 2.1 - Oracle 10g - Paradox - Interbase (XE) - PostgreSQL (15.4)

  5. #5
    Membre expérimenté
    Avatar de Rakken
    Homme Profil pro
    Inscrit en
    Août 2006
    Messages
    1 257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 257
    Points : 1 341
    Points
    1 341
    Par défaut
    Alors je confirme, on peut utiliser php5 avec une oracle9i. (Je peux même affirmer qu'on peut utiliser une 5.0, 5.1 et 5.2.1, version que j'ai testée)

    Pour ton problème, avant t'attaquer un champ "LOB" (qui sont une abomination sous oracle, vive les "text" et les "blob" mysql \o/) est-ce que tu peux déjà établir une connection avec ta base ?
    Si oui, est-ce que tu peux aller lire une table simple ? (genre avec seulement des number et des varchar2 dedans ?)

    Si tu ne peux pas te connecter du tout, ca peut venir du fait que dans ton install, il ne trouve pas le oci.dll (as-tu validé dans easy php le fait que tu veux utiliser le module oci ?), ou qu'il en trouve une mauvaise version (dans ce cas, tu peux tenter de remplacer le oci.dll, par une "vieille version" ou une plus récente si tu trouve).
    Ca peut venir de ton install d'oracle, avec les histoires de tnsname a configurer (va sur le forum Oracle, ils sauront te répondre mieux que moi sur comment il faut faire), de client a installer, etc...

    Et le jour ou tu voudras faire un insert avec un CLOB dans un de tes champs, tu regretteras vraiment mysql, mais ceci est une autre histoire.
    Rakken

    Oneira, un monde imaginaire d'Heroic Fantasy.

    Parce que la présomption d'innocence est un des fondements de notre pays et qu'elle doit le rester, dans tous les domaines : http://www.laquadrature.net/

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 65
    Points : 40
    Points
    40
    Par défaut
    pour ma part je n'y arrive pas non plus! j'en peux plus d'essayer
    voici mon environnement :
    • OS : Windows
    • Oracle client : 9.2
    • PHP 5.2
    • Apache 2.0 (mode CGI)


    mon php.ini :
    extension_dir = "c:/php5.2/ext/"
    safe_mode_include_dir ="C:\php5.2\PEAR;C:\php5.2\PEAR\DB"
    safe_mode_protected_env_vars = LD_LIBRARY_PATH
    extension=php_mbstring.dll
    extension=php_bz2.dll
    extension=php_dba.dll
    extension=php_dbase.dll
    extension=php_gd2.dll
    extension=php_oci8.dll
    ;extension=php_oracle.dll
    ...(tout le reste est commenté)
    variables systèmes (au cas où mais c'est dommage qu'on ne puisse pas les configurer dans le fichier php.ini)

    path = c:\oracle;c:\oracle\bin;c:\oracle\lib;c:\oracle\lib\oci\;c:\php5.2\ext;c:\WINDOWS\systeme32

    ORACLE_HOME=c:\oracle

    LD_LIBRARY_PATH=c:\oracle\lib

    NLSLANG="FRENCH_FRANCE.WE8ISO8859P15" (je ne sais pas si ça marche je l'aurais plutot mis en clé de registre)

    TNS_ADMIN=c:\oracle\network\ADMIN\
    --> mon tnsnames.ora est ok je me connecte via plsql+
    --> je viens de réinstaller le client 9.2 (j'hésite a passé en 10g à moins que ce soit la solution)

    J'ai dans mon répertoire d'extension PHP :
    php_oci8.dll
    oci.dll (copié du client oracle au cas ou : j'ai remarqué que l'erreur n'était pas la même)
    oci32.dll (copié du client oracle )


    bon au début j'ai cru que la dll n'était pas bonne je l'ai testée avec regsvr32
    voici le résultat :
    LoadLibrary (php_oci8.dll) a échoué - la procédure spécifiée est introuvable
    Il semblerai qu'en fait cette dll a des dépendances
    après une recherche sur le net j'ai compris qu'il y avait besoin d'une référence aux librairies du client oracle (les variables systèmes ne suffiraient pas?)

    j'ai également testé la oci.dll (celle du client oracle) voici le message :
    oci.dll a été chargée mais le point d'entrée DllregisterServer est introuvable ce fichier ne peut pas être enregistré
    Si j'ai bien compris c'est qu'il n'arrive pas a référencée la dll dans la base de registre ( a vérifier)

    J'ai vu ensuite plusieurs sites qui disaient que php_oci8.dll est compatible qu'avec une version oracle supérieur à 10 mais ça n'est pas logique par rapport à la compatibilité ascendante...

    Ensuite
    J'ai essayé via PEAR DB mais il semble que ce soit le même problème
    j'ai récupérer les logs lors de la connexion et il m'affiche
    DB Error: extension not found
    la encore on parle d'extension - j'ai regardé dans le fichier oci.php de DB et il fait un truc du genre
    DB::loadModule('oci8');
    mais je me demande bien comment il charge ce module oci8 sachant que je n'ai aucune dll correspondante.

    Ha oui dernière information (oui je sais je blablate )
    le module OCI n'est bien sur jamais chargé d'après phpinfo()

    Je ne peux pas revenir a des versions antérieures de php (d'ailleurs je vois pas l'intéret si il y a une nouvelle version c'est bien qu'elle est sensée être plus avantageuse...est ce qu'ils ont testés au moins les dll qu'ils fournissent?! )

    ma question est donc comment fait-on? quelqu'un a t-il réussi ? qu'il décrive son environnement et ce qu'il a fait - je lui en rendrai grace!

  7. #7
    Membre expérimenté
    Avatar de Rakken
    Homme Profil pro
    Inscrit en
    Août 2006
    Messages
    1 257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 257
    Points : 1 341
    Points
    1 341
    Par défaut
    Garlg, quelle galère.
    Pour ma part, j'ai réussi, mais je suis sous ubuntu. Je n'utilise donc pas oci8.dll, mais oci8.so.

    De ce que tu me dis, cela devrait fonctionner...
    Quelques pistes a explorer...
    Tu peux tenter d'utiliser pdo. Il me semble (à vérifier) que pdo n'utilise pas l'oci8.dll, mais ses propres dll.
    Il te faudra donc installer pdo ainsi que le client oracle pour pdo. J'ai eu bien du mal pour le faire sous ubuntu, mais qui sait, avec un peu de bol, ca ira mieux sous windows... (oui, je suis naif, je sais)

    Autre piste, mais je ne sais pas dans quelle mesure c'est possible sous windows, il te reste également la posibilité de telecharger directement les sources de php et de les recompiler avec une option genre --with-oci8=/home/oracle/oracle/product/xxx' (au moment de faire le ./configure).

    Autre piste, un peu plus viable, si ce n'est déjà fait tu peux tenter d'installer l'oracle instantclient 10.2, il est téléchargeable gratuitement (moyennant registration) sur le site d'Oracle. Bien que ce soit une version 10.x, il est tout a fait utilisable pour se connecter sur une 9i.

    Penser également a regarder les logs d'apache, tu trouveras peut-être une piste pour comprendre pourquoi tes dll ne sont pas prise en compte.

    Et... pour être passé par là, sincèrement, bonne chance ;-)

    Derniere chose a tenter, aller poster dans le forum oracle. Ils m'ont beaucoup aidés pour pas mal de chose et sont franchement compétents. Dans le lots il y en aura peut-être un qui possède le graal ;-) (Dans ce cas, n'hésite pas a reposter la solution ici).
    Rakken

    Oneira, un monde imaginaire d'Heroic Fantasy.

    Parce que la présomption d'innocence est un des fondements de notre pays et qu'elle doit le rester, dans tous les domaines : http://www.laquadrature.net/

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 65
    Points : 40
    Points
    40
    Par défaut
    je te remercie
    en plmus le pire c que je developpe sous windows manque de mieux et je vais devoir me retaper la galere sous linux puisque l'application sera hébegé sous linux a terme

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 65
    Points : 40
    Points
    40
    Par défaut
    personne n'a réussi à connecter php5 et oracle 9 sous windows?

  10. #10
    Membre à l'essai
    Inscrit en
    Janvier 2007
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 16
    Points : 16
    Points
    16
    Par défaut
    Citation Envoyé par Rakken
    Garlg, quelle galère.
    Pour ma part, j'ai réussi, mais je suis sous ubuntu. Je n'utilise donc pas oci8.dll, mais oci8.so.
    Salut, moi aussi j'essaye de le faire sous ubuntu, mais ça n'a pas marcher. Est ce que tu pourrais essayer d'expliquer ta manip ou bien de fournir qql liens s'il te plaît.
    Car en fait j'arrive à installer pdo, mais lors de l'install des drivers oci8 ça ne fonctionne pas (dans phpinfo() ça afffiche "drivers pdo : no value" ).
    J'ai utilisé ce lien et qql autres :
    Méthode ss Ubuntu mais qui marche pas (chez moi en tt cas)
    Merci de ton aide précieuse...

  11. #11
    Membre expérimenté
    Avatar de Rakken
    Homme Profil pro
    Inscrit en
    Août 2006
    Messages
    1 257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 257
    Points : 1 341
    Points
    1 341
    Par défaut
    Commence par récuperer une version de php en code source (dispo sur www.php.net)

    Installe ton client oracle (dispo sur le site d'oracle "oracle_instantclient").
    Ensuite, tu écrits :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    export ORACLE_HOME=instantclient,/opt/oracle/instantclient_10_2,10.1
    Puis tu "configures" ton php (tu peux enlever la plupart des options, mais pas celle qui concerne oci ou pdo) :

    Code X : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    ./configure --prefix=/opt/php-5.2.1 \
    --with-apxs2=/usr/bin/apxs2 \
    --with-config-file-path=/etc/php-5.2.1/apache2 \
    --enable-memory-limit \
    --with-mysql=shared,/usr \
    --with-mysql-sock=/var/lib/mysql/mysql.sock \
    --enable-bcmath \
    --with-bz2 \
    --enable-calendar \
    --enable-ctype \
    --with-curl \
    --enable-ftp \
    --enable-dba \
    --enable-dbase \
    --with-dom \
    --enable-exif \
    --enable-filepro \
    --with-gd \
    --enable-gd \
    --with-gettext \
    --with-gmp \
    --with-hash \
    --with-mhash  \
    --with-iconv \
    --with-jpeg-dir=/usr/lib/ \
    --with-zlib-dir=/usr/lib \
    --with-libxml \
    --enable-mbstring \
    --with-mcrypt \
    --with-mime_magic  \
    --with-mysql \
    --with-ncurses \
    --with-openssl \
    --with-pcntl \
    --with-pspell \
    --with-readline \
    --enable-shmop    \
    --enable-soap \
    --enable-sockets \
    --enable-sysvmsg \
    --enable-sysvsem \
    --enable-sysvshm \
    --enable-tokenizer \
    --enable-wddx \
    --with-xmlrpc \
    --with-xsl \
    --with-zlib \
    --with-kerberos \
    --without-pear \
    --with-pdo-mysql \
    --enable-sigchild \
    --with-oci8=$ORACLE_HOME
    --with-pdo-oci

    Et pour finir :
    L'opération est un peu longue et tu vas t'arracher la tête avec les divers modules et dépendance qu'il va te demander (encore une fois, si tu ne te sert pas d'une extension, compile sans)
    Les packages qui te manques, tu peux les trouvers pour la plupart ici.

    Et en vrac les commandes d'installation de module que j'ai du faire pour la compil, pioche dedans s'il rale sur un module au moment du ./configure :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    apt-get install php5-mysql
    apt-get install mysql-server
    apt-get install libmysqlclient15-dev
    apt-get install  build-essential 
    apt-get install flex apache2-threaded-dev libxml2-dev 
    apt-get install libmysqlclient12-dev libmysqlclient12
    apt-get install libbz2-dev
    apt-get install libcurl3-dev
    apt-get install libjpeg-mmx-dev
    apt-get install libpng12-dev
    apt-get install libgmp3-dev
    apt-get install libmcrypt-dev
    apt-get install libmhash-dev
    apt-get install libncurses5-dev
    apt-get install libpspell-dev
    apt-get install libreadline5-dev
    apt-get install libxslt1-dev
    Avec ca, un peu de temps et beaucoup de sueur, tu devrais pouvoir faire tourner ton install. Fait bien attention aux chemins (php-5.2.1, chemin de l'install d'oracle...). Pour l'instant client, n'oublie pas de prendre la base+le client sdk (de toute maniere, il ralera si tu l'a pas) et c'est parti ;-))
    Rakken

    Oneira, un monde imaginaire d'Heroic Fantasy.

    Parce que la présomption d'innocence est un des fondements de notre pays et qu'elle doit le rester, dans tous les domaines : http://www.laquadrature.net/

  12. #12
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 1
    Points : 1
    Points
    1
    Par défaut une piste?!
    j'ai exactement le même pb avec la même configuration et j'ai trouvé ca :
    "Requirements
    You will need the Oracle client libraries to use this extension. Windows users will need libraries with version at least 10 to use the php_oci8.dll.
    " sur http://us3.php.net/oci8

    ceci ne pourait pas être la raison de nôtre pb?

  13. #13
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 65
    Points : 40
    Points
    40
    Par défaut
    oui jsui tombé dessus aussi
    j'ai donc installé le client 10g mais sans succès
    il bloque toujours au chargement de la dll

  14. #14
    Membre habitué Avatar de Shinji62
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    135
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 135
    Points : 150
    Points
    150
    Par défaut
    Ah une epoque il y avait une oci8.dll patché pour php, essayer de la retrouvé ?

  15. #15
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 65
    Points : 40
    Points
    40
    Par défaut
    c bon j'ai réussi!!!!!!
    par contre je ne sais pas vraiment comment!

    - j'ai installer la version 10g
    - j'ai récupérer la dll php_oci8 du package easyphp2.0
    - j'ai copier à la barbare toute les dll de php et celles du client oracle correspondant à la lib oci.dll dans système32

    et voila le tour est joué je peux enfin me connecter à la base de donnée

    je réinstalle la version 9.2 d'oracle pour voir si la dll est compatible

  16. #16
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 65
    Points : 40
    Points
    40
    Par défaut
    Citation Envoyé par jilham
    je réinstalle la version 9.2 d'oracle pour voir si la dll est compatible
    PHP_OCI8 du package php5 est en effet dépendant de la version oci.dll du client 10G!!! ( y a t-il une possibilité d'éviter de mettre oci.dll dans le fichier système32?)

    voici les tests que j'ai effectué sur les versions:

    PHP_OCI8 | OCI | SUCCES?
    PHP4.4 | Oracle 10 | NON
    PHP4.4 | Oracle9.2 | NON
    PHP5.2 | Oracle9.2 | NON
    PHP5.2 | Oracle 10 | OUI

    par contre je n'ai pas toujours la même erreur : j'en ai eu 3 suivant les versions utilisées :

    - unable to load library php_oci8.dll -le module spécifié est introuvable
    - unable to load library php_oci8.dll - la procédure spécifiée est introuvable
    - oci8 : unable to initialize module

Discussions similaires

  1. Réponses: 9
    Dernier message: 17/11/2006, 11h08
  2. [DEBUTANT] Connexion à une base oracle dans eclipse
    Par marwaza22 dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 10/07/2006, 17h25
  3. [Oracle] Problème de connexion à une base Oracle
    Par Gigi31 dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 30/06/2006, 17h49
  4. Réponses: 4
    Dernier message: 24/02/2006, 10h48
  5. Réponses: 4
    Dernier message: 02/01/2006, 16h58

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