Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Oracle 11g PHP oci_connect schlägt OCIEnvNlsCreate() fehl

Ist OCIEnvNlsCreate() fehlgeschlagen? Willkommen in der Hölle...

Ich weiß, dass der Thread alt ist, aber das Problem besteht immer noch. Und normalerweise werden die Antworten auf dieses Problem auf Websites von Drittanbietern weitergeleitet, normalerweise 404s .

Beginnen wir mit dem Problem. Der Fehler selbst ist ziemlich allgemein. Seine Dokumentation summiert sich zu "lib crashed...keine Ahnung warum". Es gibt eine breite Palette von Lösungen, einschließlich, aber nicht beschränkt auf das Konfigurieren, Neuinstallieren und Beten, um "zufälligen Gottesnamen hier einzufügen".

Hier ist eine kurze Liste der gängigsten Lösungen:

1. Fügen Sie die Variable in Ihre .php-Datei ein.

    putenv("LD_LIBRARY_PATH=$newld");

where $newld is the link to your library.

2. Entfernen Sie die Variable LD_LIBRARY_PATH , falls vorhanden (ja, so wie es in 1. gezeigt wurde), aus Ihrer PHP-Datei und platzieren Sie es in Ihrer apache2.conf oder httpd.conf oder /etc/environment oder einer anderen Datei, die Ihre Distribution/Version für die Umgebungsvariablen hat. Eine einfache Anleitung finden Sie hier oder überall im Internet. Warum?

wie in den Installationsunterlagen angegeben. Starten Sie danach auch Apache neu. Es basiert auf Distribution/Version, aber höchstwahrscheinlich lautet der Befehl service httpd restart .

  1. oci8 neu installieren . So oft es dauert. Erzwingen Sie es nicht. Zwang macht es nur schlimmer. Versuchen Sie auch, es zu kompilieren (auch bekannt als Download des Pakets, verwenden Sie ./configure -'all the fancy commands you'll need to use' und dann make install ).

  2. Stellen Sie sicher, dass Sie den richtigen LD_LIBRARY_PATH haben . Komisch, was zu sagen, oder? Sie haben wahrscheinlich nicht bemerkt, dass Oracle den Ordner client/lib/ erstellt hat an N verschiedenen Orten die mehr oder weniger dieselben Dateien enthält, und der einzige Unterschied zwischen ihnen besteht darin, dass die Auswahl aller dieser Ordner bis auf einen zu dem erwähnten Fehler führt . Plausibilitätsprüfung?

  3. php/apache neu installieren . Es ist wahrscheinlich, dass Sie eine alte Installation hatten, die Probleme verursacht. Verwenden Sie also apt-get purge php* oder yum remove php* oder was auch immer das Gleiche für Ihre Distribution tut, wird ein guter Anfang sein.

BEARBEITEN Nach dem PHP-Upgrade trat das Problem erneut auf, diesmal mit einer anderen Lösung.

  1. SYSKONFIG BEARBEITEN Bearbeiten Sie die Datei /etc/sysconfig/httpd. Fügen Sie diese 2 Zeilen am Ende hinzu:

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

  2. Gib auf und lies das Handbuch Sie finden ihn hier .

Wenn nichts davon hilft, können Sie gerne die Mauer der Trauer durchstöbern , für eine Lösung...