sql >> Databasteknik >  >> RDS >> Oracle

Oracle 11g PHP oci_connect misslyckas med OCIenvNlsCreate()

Misslyckades OCIenvNlsCreate()? Välkommen till helvetet...

Jag vet att tråden är gammal, men problemet kvarstår. Och vanligtvis omdirigerar svaren på detta problem till tredje parts webbplatser, vanligtvis 404s.

Låt oss börja med problemet. Felet i sig är ganska generiskt. Dess dokumentation sammanfattar "lib kraschade...vet inte varför". Det finns ett brett utbud av lösningar inklusive men inte begränsat till konfigurering, ominstallation och be om att "infoga slumpmässigt gudsnamn här".

Här är en kort lista över de vanligaste lösningarna:

1. Lägg variabeln i din .php-fil.

    putenv("LD_LIBRARY_PATH=$newld");

where $newld is the link to your library.

2. Ta bort variabeln LD_LIBRARY_PATH , om det finns (ja, så som det visades i 1.), från din php-fil och placera den i din apache2.conf eller httpd.conf eller /etc/environment eller vilken fil din distribution/version har för miljövariablerna. En enkel guide finns här eller överallt på internet. Varför?

som anges i installationsdokumentationen. Starta även om apache efteråt. Det är distributions-/versionsbaserat, men mest troligt är kommandot service httpd restart .

  1. Installera om oci8 . Så många gånger som det tar. Tvinga det inte. Att tvinga gör det bara värre. Försök också att kompilera det (aka ladda ner paketet använd ./configure -'all the fancy commands you'll need to use' och sedan make install ).

  2. Se till att du har rätt LD_LIBRARY_PATH . Rolig sak att säga, eller hur? Du har förmodligen inte märkt att Oracle skapade mappen client/lib/N olika platser som innehåller mer eller mindre samma filer, och den enda skillnaden mellan dem är att att välja alla utom en av dessa mappar kommer att resultera i det nämnda felet . Sanitetskontroll?

  3. Installera om php/apache . Det är troligt att du har haft någon gammal installation som orsakar problem. Så använd apt-get purge php* eller yum remove php* eller vad som än gör samma trick för din distribution, kommer att vara en bra början.

REDIGERA Efter PHP-uppgraderingen återkom problemet, denna gång med en annan lösning.

  1. REDIGERA SYSCONFIG Redigera filen /etc/sysconfig/httpd. Lägg till dessa två rader i slutet:

    exportera LD_LIBRARY_PATH=/path/to.libexport ORACLE_HOME=/path/to/home

  2. GE UPP OCH LÄS MANUALEN den finns här .

Om ingen av dessa saker hjälper, kika gärna runt på väggen av sorg , för en lösning...



  1. Hur kan du se vilka kolumner som är oanvända i ALL_TAB_COLS?

  2. Flera frågor körs i java i en enda sats

  3. flake8 klagar på boolesk jämförelse ==i filterklausul

  4. PHP MySQLI Förhindra SQL-injektion