Oracle
 sql >> Database >  >> RDS >> Oracle

Oracle 11g PHP oci_connect non riesce OCIEnvNlsCreate()

Hai ottenuto OCIEnvNlsCreate() non riuscito? Benvenuto all'inferno...

So che il thread è vecchio, ma il problema è ancora presente. E di solito le risposte a questo problema reindirizzano a siti di terze parti, di solito 404.

Cominciamo con il problema. L'errore stesso è piuttosto generico. La sua documentazione si riassume in "lib crashed... non so perché". Esiste un'ampia gamma di soluzioni tra cui, a titolo esemplificativo ma non esaustivo, la configurazione, la reinstallazione e la preghiera di "inserire qui un nome divino casuale".

Ecco un breve elenco delle soluzioni più comuni:

1. Inserisci la variabile nel tuo file .php.

    putenv("LD_LIBRARY_PATH=$newld");

where $newld is the link to your library.

2. Rimuovi la variabile LD_LIBRARY_PATH , se esiste (sì, il modo in cui è stato mostrato in 1.), dal tuo file php e inseriscilo nel tuo apache2.conf o httpd.conf o /etc/environment o in qualsiasi file la tua distribuzione/versione ha per le variabili di ambiente. Una semplice guida può essere trovata qui o ovunque su Internet. Perché?

come indicato nei documenti di installazione. Riavvia anche Apache in seguito. È basato su distribuzione/versione, ma molto probabilmente il comando è service httpd restart .

  1. Reinstalla oci8 . Tutte le volte che ci vogliono. Non forzarlo. Forzare non fa che peggiorare le cose. Inoltre, prova a compilarlo (ovvero scarica il pacchetto usa ./configure -'all the fancy commands you'll need to use' e poi make install ).

  2. Assicurati di avere il LD_LIBRARY_PATH corretto . Una cosa divertente da dire, vero? Probabilmente non hai notato che Oracle ha creato la cartella client/lib/ in N località diverse che contiene più o meno gli stessi file, e l'unica differenza tra di loro è che scegliere tutte tranne una di quelle cartelle risulterà nell'errore menzionato . Controllo di integrità?

  3. Reinstalla php/apache . È probabile che tu abbia una vecchia installazione che sta causando problemi. Quindi usa apt-get purge php* o yum remove php* o qualunque cosa faccia lo stesso trucco per la tua distribuzione, sarà un buon inizio.

MODIFICA Dopo l'aggiornamento di PHP il problema si è ripresentato, questa volta con una soluzione diversa.

  1. MODIFICA SYSCONFIG Modifica il file /etc/sysconfig/httpd. Aggiungi quelle 2 righe alla fine:

    export LD_LIBRARY_PATH=/percorso/a.libexport ORACLE_HOME=/percorso/a/casa

  2. ANNUNCIATI E LEGGI IL MANUALE può essere trovato qui .

Se nessuna di queste cose aiuta, sentiti libero di sfogliare il muro del dolore , per una soluzione...