Oracle
 sql >> Base de données >  >> RDS >> Oracle

Oracle 11g PHP oci_connect échoue OCIEnvNlsCreate()

Vous avez OCIEnvNlsCreate() a échoué ? Bienvenue en enfer...

Je sais que le fil est vieux, mais le problème est toujours présent. Et généralement, les réponses à ce problème redirigent vers des sites tiers, généralement des 404.

Commençons par le problème. L'erreur elle-même est assez générique. Sa documentation se résume à "lib s'est écrasé... je ne sais pas pourquoi". Il existe un large éventail de solutions, y compris, mais sans s'y limiter, la configuration, la réinstallation et la prière pour "insérer un nom de dieu aléatoire ici".

Voici une courte liste des solutions les plus courantes :

1. Placez la variable dans votre fichier .php.

    putenv("LD_LIBRARY_PATH=$newld");

where $newld is the link to your library.

2. Supprimer la variable LD_LIBRARY_PATH , s'il existe (oui, comme il a été montré dans 1.), à partir de votre fichier php et placez-le dans votre apache2.conf ou httpd.conf ou /etc/environment ou quel que soit le fichier de votre distribution/version pour les variables d'environnement. Un guide simple peut être trouvé ici ou partout sur Internet. Pourquoi ?

comme indiqué dans la doc d'installation. Redémarrez également apache par la suite. C'est basé sur la distribution/version, mais la commande est très probablement service httpd restart .

  1. Réinstaller oci8 . Autant de fois qu'il en faudra. Ne forcez pas. Forcer ne fait qu'empirer les choses. Aussi, essayez de le compiler (c'est-à-dire téléchargez le paquet, utilisez ./configure -'all the fancy commands you'll need to use' puis make install ).

  2. Assurez-vous d'avoir le bon LD_LIBRARY_PATH . Drôle de chose à dire, non ? Vous n'avez probablement pas remarqué qu'oracle a créé le dossier client/lib/ dans N emplacements différents qui contient plus ou moins les mêmes fichiers, et la seule différence, entre eux, est que choisir tous ces dossiers sauf un entraînera l'erreur mentionnée . Vérification de santé ?

  3. Réinstaller php/apache . Il est probable que vous ayez une ancienne installation qui cause des problèmes. Utilisez donc apt-get purge php* ou yum remove php* ou quoi que ce soit qui fasse la même chose pour votre distribution, ce sera un bon début.

MODIFIER Après la mise à jour de PHP, le problème est réapparu, cette fois avec une solution différente.

  1. MODIFIER SYSCONFIG Modifiez le fichier /etc/sysconfig/httpd. Ajoutez ces 2 lignes à la fin :

    exporter LD_LIBRARY_PATH=/chemin/vers.libexport ORACLE_HOME=/chemin/vers/home

  2. ABANDONNER ET LIRE LE MANUEL il peut être trouvé ici .

Si rien de tout cela ne vous aide, n'hésitez pas à parcourir le mur du chagrin , pour une solution...