web-dev-qa-db-fra.com

Appel de la fonction non définie oci_connect ()

J'ai eu cette erreur.

Fatal error: Call to undefined function oci_connect()
$conn = oci_connect('localhost', 'username', 'password') or die(could not connect:'.oci_error)

c'est le code.

C'est l'erreur que j'ai eue.

Fatal error: Call to undefined function oci_connect() in C:\xampp\htdocs\org\org\php\myphp.php on line 51

J'ai vérifié les fichiers PHP DLL dans le dossier ext. 

Quelqu'un aider sur cette question merci d'avance.

6
user3153806

Je viens de passer trois jours entiers à lutter contre ce problème. 

J'utilisais ma connexion Oracle sous Windows 7 et aucun problème. La semaine dernière, je viens d’obtenir un nouvel ordinateur avec Windows 8. Installez XAMPP 1.8.2. Chaque application PHP/MySQL sur ce serveur fonctionne bien. Le problème est venu lorsque je tente de connecter mes applications php à Oracle DB. 

Appel de la fonction non définie oci_pconnect ()

Et quand je lance/arrête Apache avec les modifications, un étrange "Warning" sur "PHP Startup" va dans LOG avec "Warning PHP: PHP Startup: in Unknown on line 0"

J'ai tout fait (non commenté php_oci8.dll et php_oci8_11g.dll, copiez oci.dll dans le répertoire/ext, près de/Apache et RIEN cela fonctionne. Téléchargez chaque version de Instant Client et RIEN.

Dieu est venu dans mon aide. Lorsque je télécharge Oracle Instant Client 32 bits, tout fonctionne correctement. phpinfo () affiche les informations sur oci8 et mon application fonctionne correctement. 

Alors, NE TENTEZ JAMAIS QUE VOTRE VERSION SOUS WINDOWS SOIT x64. Les liens sont entre XAMPP et Oracle Instant Client.

12
Soichiro Cub

Etapes simples

Vous devez activer l'extension ci-dessous dans votre php.ini

;extension=php_oci8.dll
;extension=php_oci8_11.g.dll

en supprimant le ";" de sorte que les résultats seront ci-dessous:

extension=php_oci8.dll
extension=php_oci8_11.g.dll

Télécharger Oracle Instant Client: - De préférence 32 bits. 32 bits fonctionnera également sur 64 bits. Vous pouvez simplement google: télécharger le client instantané Oracle 32 bits. Utilisez la version 11 du client car extension=php_oci8_11.g.dll ne fonctionnera pas avec 12. Décompressez le package dans un emplacement tel que C:\Oracle\instantclient_11_2.

Enfin, modifiez la variable PATH du système avec l'emplacement final, sous les variables système et non les variables utilisateur.

Ensuite, vous devez redémarrer le système pour que les modifications de PATH se propagent complètement.

Si vous ne faites que redémarrer XAMPP/WAMP sans redémarrer la machine, les fichiers DLL du client (i.e. OCL.dll) ne seront pas chargés (ni trouvés) Par l'extension php_oci8_11g.dll de PHP.

6
Elijah Keya

Choses à faire pour que 

  1. Chaque fois que vous vous connectez à la base de données Oracle, essayez d’utiliser les bibliothèques clientes Oracle 32 bits, car XAMP PHP est compilé avec 32 bits (bien que vous ayez Windows Machine 64 bits).
  2. Téléchargez le client Oracle à partir de Téléchargez à partir d'ici

  3. Collez-le dans C:\instantclient_12_1

  4. Puis définissez le chemin sur ci-dessus dans Variable d'environnement système
  5. Ensuite, allez à C:\xampp\php\php.ini et décommentez extension = php_oci8_12c.dll
  6. Ensuite, redémarrez le XAMP et cela devrait fonctionner sans aucun problème.
4
Ron

Vous devez activer cette extension dans votre fichier php.ini. Voir Installation Oracle :

extension=oci8.so
3
John Conde

J'ai installé WAMPServer 2.5 (32 bits) et j'ai également rencontré une erreur oci_connect. J'avais également le client Oracle 11g (32 bits) installé. La solution courante que j'ai lue dans d'autres publications consistait à modifier le fichier php.ini de votre répertoire C:\wamp\bin\php\php5.5.12, mais cela n'a jamais fonctionné pour moi. J'ai peut-être mal compris, mais j'ai constaté que si vous modifiez le fichier php.ini dans le répertoire C:\wamp\bin\Apache\apache2.4.9, vous obtiendrez les résultats souhaités. La seule chose que j'ai modifiée dans le fichier php.ini d'Apache était de supprimer le point-virgule en extension=php_oci8_11g.dll afin de l'activer. J'ai ensuite redémarré tous les services et cela fonctionne maintenant! J'espère que cela fonctionne pour vous.

3
ADT

essaye ça

dans le fichier php.ini, décommentez cette

extension_dir = "./" "supprimer le point-virgule"

0
mustafa987

Bon, les gars.

First, utilisez 

<?php 
phpinfo();
?> 

et déterminez votre version PHP (située tout en haut, par exemple 7.0.xxx) ainsi que votre architecture de version PHP: x64 ou x86 et également, Thread Safe or Not Thrread Coffre-fort (situé dans le premier tableau en tant que "Sécurité du fil".) "Désactivé" signifie évidemment "Pas de sécurité du fil".

Il est absolument essentiel que les trois logiciels suivants soient nécessaires:

  1. pour la même version majeure de PHP (7.0 pour 7.0.xxx)
  2. même version d'Oracle que la version à laquelle vous accédez (11g, 12g, etc.)
  3. la même version de PHP «Non Thread Safe/Thread Safe»
  4. tous pour la même architecture.

Si l'un des éléments suivants concerne une architecture différente, version non Thread Safe/Thread Safe, numéro de version majeure PHP ou version de la base de données, des erreurs se produiront:

 1. PHP for Windows
 2. OCI8 PECL Drivers for PHP (https://pecl.php.net/package/oci8)
 3. Oracle Instant Client

N'oubliez pas: si vous vous connectez à une instance Oracle 11g, vous avez besoin d'un pilote 11g.

Second, installez le bon PHP, le pilote OCI8 PECL et le client instantané.

J'ai choisi:

d:\php\ for php
d:\oci\ for instant client
unzip the contents of the OCI8 PECL Driver into d:\php\ext\

Troisième, modifiez d:\php\php.ini en suivant les instructions données par Oracle:

1. set the extension directory
2. set only one of the following:
  a. for 11g drivers, use extension=php_oci8_11g.dll
  b. for 12c drivers, use extension=php_oci8_12c.dll
  c. for other Oracle DB drivers, use the correct Oracle extension.

Quatrième étape: Ajoutez d:\oci\(ou l’emplacement d’emplacement instantané de votre client) à votre système PATH.

Cinquième: redémarrez votre PC.

Sixième, à l'invite de commande, tapez "où oci *" et vérifiez que votre version du chemin d'installation Instant Client de oci.dll est présente.

Septième, allez à d:\php\et tapez "php -m" et vous devriez voir OCI8 dans la liste.

Si vous ne voyez pas OCI8 dans la liste des modules après avoir tapé "php -m", ouvrez d:\php\errorlog.txt

Si vous voyez quelque chose comme:

PHP Warning:  PHP Startup: Unable to load dynamic library 'ext\php_oci8_11g.dll' - %1 is not a valid Win32 application.

alors le client instantané ou le téléchargement de votre pilote PECL n’est pas de la même architecture que votre version PHP.

Si vous voyez quelque chose comme:

PHP Warning:  PHP Startup: Unable to load dynamic library 'ext\php_oci8_12c.dll' - The specified procedure could not be found.

vous utilisez alors le mauvais pilote OCI8 PECL pour votre version de client instantané.

J'espère que cela t'aides.

0
hype

J'ai installé Wamp et je m'attendais à ce que tout fonctionne correctement. Pas si . J'ai 2 clients Oracle sur ma machine Windows x64 (instantané et complet). Si quelqu'un d'autre a une configuration similaire, l'astuce consiste à s'assurer que le client instantané est (a) dans votre variable d'environnement Path et (b) précède le client complet dans la variable Path. Il existe une très brève section sur Windows ici mais elle a donné la réponse.

0
David Willis

Eh bien, si quelqu'un est confronté à ce problème à un moment de sa vie, voici mon histoire:

  • Windows 10 x64
  • Oracle Express 11g
  • XAMPP 32bits avec PHP 7.1.6

    1. Téléchargez Instant Client Basic 12.1 here (La version requise par phpinfo () dans la commande Configure). J'ai téléchargé la v12.1 pour 32bits (même si mon PC était x64)
    2. Téléchargez Instant Client SDK (qui se trouve sur le même site que celui où vous téléchargez Instant Client mais faites un peu défiler l'écran)
    3. Copiez les fichiers téléchargés dans le lecteur C: C:\instantclient_12_1 et à l'intérieur de celui-ci, le sdk comme C:\instantclient_12_1\sdk
    4. Ajoutez aux variables d'environnement system ces deux itinéraires précédents (Oracle_PATH et Oracle_PIN pour le SDK).
    5. Décommentez les extension = php_oci8_12c.dll et extension = php_pdo_oci.dll dans php.ini (C:\xampp\php\php.ini) en supprimant le point-virgule en face de celui-ci.
    6. Redémarrez votre PC car vous avez modifié vos variables SYSTEM (et de cette façon XAMPP sera également redémarré)

PS: Deux jours de ma vie pour y arriver.

À votre santé

0
jpacareu

J'ai eu le même problème, la solution sur cette page m'a aidé, il est causé par l'utilisation de fichiers oci ddl incompatibles.

J'espère que ça aide.

0
Frank