Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & Oracle
PHP & Oracle Forum d'entraide sur Oracle avec PHP. Avant de poster -> FAQ Oracle et Cours Oracle
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 03/03/2007, 20h44   #1
Invité régulier
 
Inscription : février 2007
Messages : 35
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 35
Points : 7
Points : 7
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
soumia1988 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/03/2007, 09h55   #2
Nouveau Membre du Club
 
Inscription : juillet 2003
Messages : 89
Détails du profil
Informations forums :
Inscription : juillet 2003
Messages : 89
Points : 35
Points : 35
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
canabral est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/03/2007, 16h27   #3
Membre du Club
 
Avatar de docr1
 
Inscription : février 2007
Messages : 74
Détails du profil
Informations personnelles :
Âge : 27
Localisation : France, Ille et Vilaine (Bretagne)

Informations forums :
Inscription : février 2007
Messages : 74
Points : 51
Points : 51
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.
docr1 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/03/2007, 17h05   #4
Membre Expert
 
Avatar de Lung
 
Analyste-programmeur
Inscription : mai 2002
Messages : 2 046
Détails du profil
Informations personnelles :
Âge : 32
Localisation : France, Yonne (Bourgogne)

Informations professionnelles :
Activité : Analyste-programmeur
Secteur : Industrie

Informations forums :
Inscription : mai 2002
Messages : 2 046
Points : 2 046
Points : 2 046
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.
______________________________________________________________________________________________

Delphi 6#2 Entreprise - Delphi 2010 Architecte - Delphi XE2 Entreprise
Win XP Pro - OpenGL 2.1 - Oracle 11g - Firebird 2.5.0.2
Écrivez dans un français correct !!
Lung est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/03/2007, 18h07   #5
Modérateur
 
Avatar de Rakken
 
Inscription : août 2006
Messages : 1 207
Détails du profil
Informations forums :
Inscription : août 2006
Messages : 1 207
Points : 1 137
Points : 1 137
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/
Rakken est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/03/2007, 16h55   #6
Nouveau Membre du Club
 
Inscription : mars 2007
Messages : 65
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 65
Points : 25
Points : 25
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 :
Citation:
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)

Citation:
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 :
Citation:
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 :
Citation:
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
Citation:
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
Citation:
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!
jilham est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/03/2007, 17h17   #7
Modérateur
 
Avatar de Rakken
 
Inscription : août 2006
Messages : 1 207
Détails du profil
Informations forums :
Inscription : août 2006
Messages : 1 207
Points : 1 137
Points : 1 137
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/
Rakken est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/03/2007, 22h57   #8
Nouveau Membre du Club
 
Inscription : mars 2007
Messages : 65
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 65
Points : 25
Points : 25
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
jilham est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/03/2007, 16h04   #9
Nouveau Membre du Club
 
Inscription : mars 2007
Messages : 65
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 65
Points : 25
Points : 25
personne n'a réussi à connecter php5 et oracle 9 sous windows?
jilham est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/04/2007, 06h56   #10
Invité régulier
 
Inscription : janvier 2007
Messages : 15
Détails du profil
Informations forums :
Inscription : janvier 2007
Messages : 15
Points : 6
Points : 6
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...
00Dexter00 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/04/2007, 09h48   #11
Modérateur
 
Avatar de Rakken
 
Inscription : août 2006
Messages : 1 207
Détails du profil
Informations forums :
Inscription : août 2006
Messages : 1 207
Points : 1 137
Points : 1 137
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 :
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 :
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 :
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/
Rakken est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/04/2007, 16h11   #12
Invité de passage
 
Inscription : avril 2007
Messages : 1
Détails du profil
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?
narco est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/04/2007, 16h10   #13
Nouveau Membre du Club
 
Inscription : mars 2007
Messages : 65
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 65
Points : 25
Points : 25
oui jsui tombé dessus aussi
j'ai donc installé le client 10g mais sans succès
il bloque toujours au chargement de la dll
jilham est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/04/2007, 17h07   #14
Membre habitué
 
Avatar de Shinji62
 
Inscription : novembre 2006
Messages : 135
Détails du profil
Informations forums :
Inscription : novembre 2006
Messages : 135
Points : 133
Points : 133
Ah une epoque il y avait une oci8.dll patché pour php, essayer de la retrouvé ?
Shinji62 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/04/2007, 14h42   #15
Nouveau Membre du Club
 
Inscription : mars 2007
Messages : 65
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 65
Points : 25
Points : 25
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
jilham est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/04/2007, 11h53   #16
Nouveau Membre du Club
 
Inscription : mars 2007
Messages : 65
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 65
Points : 25
Points : 25
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
jilham est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 19h03.


 
 
 
 
Partenaires

Hébergement Web