PHP & Oracle - oci_connect() ORA-12705: Ne peut pas accéder NLS fichiers de données
Nous avons été à l'aide de Oracle sur notre serveur pendant des années, mais ON l'a supprimé hier sans avertissement clair et c'est vraiment jeté nos systèmes de!
J'ai agi sur les conseils de cwallenpoole (merci!!) et ont fait de bons progrès et PHP est maintenant au moins, y compris le oracle fonctions (c'est à dire oci_connect) mais j'éprouve maintenant un autre message d'erreur:
"Avertissement: oci_connect() [function.bec-connect]: ORA-12705: Ne peut pas accéder NLS fichiers de données ou invalide environnement"
Nous avons assuré la tnsnames.ora etc les fichiers sont au bon endroit, mais ayant encore pas de joie 🙁
merci
- Avez-vous redémarré le serveur web? Êtes-vous sûr à 100% que vous modifiez le droit de php.ini comme indiqué lors de l'appel de
phpinfo()
? - Merci pour la réponse - oui, nous avons redémarré le serveur (beaucoup, beaucoup de temps malheureusement!) et nous sommes certainement d'édition le droit de PHP.fichier ini après vérification par le biais de la fonction phpinfo et aussi écho à la fonction php_ini_loaded_file(); Une chose - nous avons 4 web de configuration qui tous avaient leur propre php.ini, mais ils partagent tous le même aujourd'hui 🙁
- Ne
phpinfo()
faire aucune mention de BEC? - Nan, à seulement quelques chemins que nous avons définis pour être inclus. Sur notre ancien serveur nous avons également une section pour les "oci8' (à l'aide de Zend Core for Oracle btw, que nous n'avons pas maintenant, donc il faudrait être difficile pour utiliser les mêmes paramètres)
- Hmm, alors l'extension n'est pas chargé. Qui devrait signifier que ce n'est pas la lecture de la
extension=php_oci8_dll
ligne, sinon il serait plantage au redémarrage. Mais vous dites que vous avez vérifié les chemins, et c'est le bon php.ini... Bizarre! - Mes pensées aussi! De toute façon pour vérifier exactement si c'est d'essayer de lire que l'extension du fichier? Ou ce que l'enfer c'est d'essayer de faire?! 🙂
- de mon expérience, il parvient à lire le fichier d'extension, ou il se bloque. Il n'y a pas de zone grise là. Ce que l'on pourrait essayer de faire est délibérément changer le nom du fichier à quelque chose d'incorrect. Si cela va de travers sans une plainte, elle n'est pas la lecture d'un fichier INI pour quelque raison que ce soit
- Vais essayer ça, merci!
- laissez-nous continuer cette discussion dans le chat
- forums.oracle.com/forums/thread.jspa?threadID=406036
- Excellente ressource, merci:)
Vous devez vous connecter pour publier un commentaire.
Ok. C'est mon cauchemar personnel. J'ai sérieusement se réveiller au milieu de la nuit... ou je n'ai pas, mais j'ai passé des jours sur ce problème.
Donc, c'est ce qui a fonctionné pour moi:
Alors... qu'est ce que je fais généralement... Et en général ça marche... Surtout...
Je pense que, de façon réaliste, tout ce que je peux dire, c'est Bonne Chance et bon vent.
La seule façon que je pouvais obtenir de PHP pour se connecter à Oracle a été l'utilisation du Zend Framework.
http://framework.zend.com/
Suivez cette procédure pour définir la variable d'environnement NLS_LANG pour les bases de données Oracle.
Pour définir la variable d'environnement NLS_LANG pour les bases de données Oracle
Déterminer la NLS_LANG valeur.
Dans l'entrepôt de données de la base de données, exécutez la commande
SELECT * FROM V$NLS_PARAMETERS
Faire une note de la NLS_LANG valeur, qui est dans le format [NLS_LANGUAGE]_[NLS_TERRITORY].[NLS_CHARACTERSET].
Par exemple: American_America.UTF8
Pour Windows:
Accédez au Panneau de configuration > Système et cliquez sur l'onglet Avancé. Cliquez Sur Variables D'Environnement.
Dans la section variables Système, cliquez sur Nouveau.
Dans le Nom de la Variable de champ, entrez NLS_LANG.
Dans la Valeur de la Variable de champ, entrez le NLS_LANG valeur qui a été renvoyé à l'Étape 1.
Le format de la NLS_LANG valeur doit être [NLS_LANGUAGE]_[NLS_TERRITORY].[NLS_CHARACTERSET].
Par exemple: American_America.UTF8.
Pour UNIX, définissez la variable, comme indiqué ci-dessous:
setenv NLS_LANG
Par exemple: setenv NLS_LANG American_America.UTF8.
Si vos données 7 bits ou 8 bits ASCII et le Informatica Serveur est en cours d'exécution sur UNIX, puis définissez
NLS_LANG _.WE8ISO8859P1
ATTENTION: assurez-vous de définir le NLS_LANG variable correctement, comme indiqué dans la présente procédure, ou vos données ne seront pas affichés correctement.
Redémarrage de la machine après la création de la variable.