Fatal error: Call to undefined function oci_connect()

Korg
Invité n'ayant pas de compte PHPfrance

14 mars 2008, 13:29

Merci Ryle tu es ma lueur d'espoir... :)

Je te résume exactement ce que j'ai fait :
- installation d'oracle 9 puis 10 ultérieurement
- installation d'easy php ou wamp
Pour éviter le conflit du localhost j'ai changé le port d'oracle
j'ai décommenté pour l'activer, dans le php.ini, l'extention oci8.dll
J'ai créé une page bidon avec ce code pour tester la connexion
<?php
$connex = oci_connect('monlogin', 'monmotdepasse', 'matable');
if ($connex){
print "oui";
}else{
print "non";
}
?>
J'ai redémarré le tout et le message d'erreur s'affiche inexorablement :

Code : Tout sélectionner

Fatal error: Call to undefined function oci_connect() in C:\wamp\www\monsite\index.php
et aussi par wamp

Code : Tout sélectionner

Le point d'entrée de procédure OCILobRead2 est introuvable dans la bibliothèque de liaisons dynamique OCI.Dll.
Ai-je loupé une étape ? Faut-il recompiler un truc ? Déclarer des variables ou autre ? Déplacer un fichier ?

Korg

Ps : j'arrive à me connecter à ma base oracle via une console MSDOS

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

14 mars 2008, 15:19

En principe, au niveau du php.ini, il te faut donc décommenter la ligne "extension=php_oci8.dll" et vérifier que le chemin spécifié dans "extension_dir" pointe vers le bon dossier.

Si tout est correcte, regarde au démarrage d'apache s'il n'y a pas de message d'erreur (ça te donnera toujours plus d'informations sur le problème rencontré s'il n'arrive pas à trouver ou à charger la librairie :))

Vérifie également que la variable d'environnement ORACLE_HOME est correctement définie (pointe bien vers le dossier d'oracle). A préciser également la variable ORACLE_SID contenant le nom de ta base (c'est pas obligatoire ceci dit, tu peux donner la description complète ((DESCRIPTION = (ADDRESS = (PROTOCOL = TCP) ...) lors de l'appel à la fonction (dans $db) :))
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Korg
Invité n'ayant pas de compte PHPfrance

14 mars 2008, 15:48

enfin du mieux !!! même si ca marche pas :?

Je ne connais rien à oracle et son install...J'ai déclaré la variable d'environnement ORACLE_HOME, c'est pas automatique normalement ? Bref, toujours est-il que maintenant j'ai ce message :

Code : Tout sélectionner

Warning: oci_connect() [function.oci-connect]: ORA-12154: TNS : l'identificateur de connexion indiqué n'a pas pu être résolu in C:\wamp\www\monsite\index.php on line 12 non
Une idée ? ca approche merci Ryle :)

Korg

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

14 mars 2008, 16:37

Cela veut dire qu’il trouve bien la librairie, le problème maintenant n’est plus que celui de la connexion.

Normalement, si tu as défini la variable d’environnement ORACLE_SID avec le nom de ta base (ex : XE si tu utilise l’eXpress Edition), tu ne devrais pas voir d’erreur.

Sinon, sans rentrer dans le détail de ce qu’est le TNS, tu dois avoir un fichier de configuration nommé tnsnames.ora (qui doit se trouver dans ton dossier ORACLE_HOME/network/admin) décrivant les différentes bases accessibles.

Le plus simple est sans doute d’utiliser cette syntaxe directement dans ton appel à oci_connect() pour lui indiquer quelle base utiliser :

Code : Tout sélectionner

$cnx = oci_connect( "<username>", "<password>", "(DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(Host = <serveur>)(Port = <port>)) ) (CONNECT_DATA = (SERVICE_NAME = <sid>) ) )");
En remplaçant les valeurs qui vont bien (le port par défaut doit être 1521, le serveur localhost, et le sid, si tu utilise XE est... XE :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Korg
Invité n'ayant pas de compte PHPfrance

14 mars 2008, 16:50

PUTAIN CA Y EST, YOU DID IT !!!!!!!!!!!!!!!!! (désolé pour le "putain" mais depuis le temps :D)
entre les variables d'environnement elles ne se définissent pas toutes seules à l'install normalement ? et ce fichu nom de base xe ^^

1000 MERCIS

Korg

mt1rst
Invité n'ayant pas de compte PHPfrance

19 mai 2015, 15:21

J'ai changé en dur dans le php.ini de wamp la ligne ;extension=php_oci8.dll (j'ai retiré le point-virgule)

et maintenant quand je démarre wamp ca me met :

Code : Tout sélectionner

Le point d'entrée de procédure OCILobRead2 est introuvable dans la bibliothèque de liaisons dynamique OCI.Dll.
C'est pas fait pour aider :cry:

Merci à ceux qui pourront m'aider.

Korg
Bonjour, je te suggère de réinstaller soit wamp ou xampp ensuite de passer sur le site d'oracle pour télécharger "instantclient-basic-windows.x64-12.1.0.2.0.zip" selon ta plateforme.
décompresser le contenu du zip directement dans le répertoire du serveur web "C:\xampp ou wamp\apache\bin".
cette procédure est a suivre dans le cas d'une architecture 3/3 c à dire
- srv base de données
- srv web apache
- client

Petit nouveau ! | 1 Messages

26 mai 2015, 16:38

Bonjour j'ai actuellement la mémé erreur.

Quelqu'un saurait m'aider svp ?

Merci