sql >> Database >  >> RDS >> Oracle

Oracle 11g PHP oci_connect mislukt OCIEnvNlsCreate()

Is OCIEnvNlsCreate() mislukt? Welkom in de hel...

Ik weet dat de thread oud is, maar het probleem is nog steeds aanwezig. En meestal verwijzen de antwoorden op dit probleem door naar sites van derden, meestal 404s.

Laten we beginnen met het probleem. De fout zelf is vrij algemeen. De documentatie komt neer op "lib crashed...weet niet waarom". Er is een breed scala aan oplossingen, waaronder, maar niet beperkt tot, configureren, opnieuw installeren en bidden om "hier een willekeurige godsnaam in te voegen".

Hier is een korte lijst van de meest voorkomende oplossingen:

1. Zet de variabele in je .php-bestand.

    putenv("LD_LIBRARY_PATH=$newld");

where $newld is the link to your library.

2. Verwijder de variabele LD_LIBRARY_PATH , als het bestaat (ja, zoals het werd getoond in 1.), uit je php-bestand en plaats het in je apache2.conf of httpd.conf of /etc/environment of welk bestand je distributie/versie ook heeft voor de omgevingsvariabelen. Een eenvoudige handleiding vindt u hier of overal op internet. Waarom?

zoals vermeld in de installatiedocumenten. Herstart daarna ook apache. Het is gebaseerd op distributie/versie, maar hoogstwaarschijnlijk is het commando service httpd restart .

  1. Oci8 opnieuw installeren . Zo vaak als nodig is. Forceer het niet. Forceren maakt het alleen maar erger. Probeer het ook te compileren (ofwel download het pakket gebruik ./configure -'all the fancy commands you'll need to use' en dan make install ).

  2. Zorg ervoor dat je de juiste LD_LIBRARY_PATH . hebt . Grappig om te zeggen, toch? Het is je waarschijnlijk niet opgevallen dat oracle de map client/lib/ . heeft gemaakt op N verschillende locaties die min of meer dezelfde bestanden bevat, en het enige verschil tussen hen is dat het kiezen van alle mappen op één na de genoemde fout zal opleveren . Gezondheidscontrole?

  3. Plaats php/apache opnieuw . Het is waarschijnlijk dat u een oude installatie had die problemen veroorzaakt. Gebruik dus apt-get purge php* of yum remove php* of wat dan ook dezelfde truc voor je distributie doet, zal een goed begin zijn.

BEWERKEN Na de PHP-upgrade deed het probleem zich opnieuw voor, dit keer met een andere oplossing.

  1. BEWERK SYSCONFIG Bewerk het bestand /etc/sysconfig/httpd. Voeg die 2 regels aan het einde toe:

    export LD_LIBRARY_PATH=/pad/naar.libexport ORACLE_HOME=/pad/naar/home

  2. GEEF OP EN LEES DE HANDLEIDING het kan hier worden gevonden .

Als geen van deze dingen helpt, blader dan gerust door de muur van verdriet , voor een oplossing...



  1. SQL om automatisch ontbrekende datums en prijs te genereren vanaf de onmiddellijk vorige datum voor ontbrekende datum in tabel

  2. Sql eenvoudige bediening voor beginners

  3. fail execute-statement met php en mysql

  4. Kan MySQL naadloos worden vervangen door MariaDB of moet er in dit geval iets veranderen?