Noch einmal: Problem mit Zugriff auf Oracle

Vertigo21

Erfahrenes Mitglied
Dieses Mal mit einer ganz merkwürdigen Fehlermeldung:
HTML:
Fatal error: Call to undefined function ocilogon() in  ...\php-skript\test\funk_test.php on line  54
PHP Warning: PHP Startup: Unable to load dynamic library  'c:\php\ext\php_oci8.dll' - Das angegebene Modul wurde nicht gefunden. in  Unknown on line 0

Der Witz dabei ist, dass die Datei DEFINITIV vorhanden ist.:mad:
Auch die Zeile in der "php.ini" ist absolut korrekt:
HTML:
; Directory in which the loadable extensions (modules) reside.
extension_dir = "c:\php\ext"

extension=php_oci8.dll

Ich weiß nicht weiter.
 
Ok, nachdem ich mich jetzt teilweise durch das (englische) Oracle-Forum gearbeitet habe, habe ich jetzt folgenden Ansatz:

  1. Aus dem Oracle-Client Installationsverzeichnis (normalerweise unter "D:\ oracle \ ora92 \ bin" die Datei "oci.dll" heraussuchen
  2. Diese Datei in "C:\ Windows \ System 32" kopieren
Danach wird die "oci8.dll" tatsächlich bei mir gefunden. Nun tritt aber ein neuer Fehler auf (was auch sonst - Murphy lässt grüssen :rolleyes: ):
HTML:
Warning: ocilogon() [function.ocilogon]:  OCIEnvInit() failed. There is something wrong with your system - please check  that ORACLE_HOME is set and points to the right directory in ...\php-skript\test\funk_test.php on line 54
 
Na hast du die Umgebungsvariable ORACLE_HOME gesetzt?

Sonst musst du mal im DOS Fenster:

SET ORACLE_HOME = Pfad des Verzeichnisses, in dem die Oracle-Client-Software installiert ist.

probieren ..

Gruß Stefan
 
Ja, habe ich. Ebenfals wieder ohne Erfolg. Dann habe ich ein wenig gegoogelt und das hier gefunden: http://www.oracle.com/technology/pub/notes/technote_php_instant.html

Dort ist genau mein Problem und dessen Lösung erwähnt.
Aber auch das hat nicht geholfen! :mad:

Immer noch das Gleiche. Der Fehlermeldung zufolge hat das Initiieren der Oracle-Umgebung ja nicht geklappt. Selbst mit einer Standard-Installation tritt mein Fehler auf. PHPinfo() meldet, oci8-Support sei "enabled" also scheint es nur an Oracle zu liegen.

Mir fällt nichts mehr ein, als den ganzen Oracle-Kram noch mal von Grund auf neu aufzusetzen. Für bessere Vorschläge bin ich immer offen.

Anmerkung:
Windows 2003 Server
MS IIS 6.0
PHP 5.1.2
 
Zuletzt bearbeitet:
Inzwischen habe ich Oracle komplett neu installiert - immer noch kein Erfolg. Er weigert sich beständig immer noch mit der gleichen Fehlermeldung. :(

Gehe ich recht in der Annahme, dass die ORACLE_HOME eine Umgebungsvariable ist? Wenn ja, sieht mein Pfad darin so aus:
Code:
D:\oracle\ora92\

Könnte daran vielleicht etwas falsch sein? Sieht der Wert bei euch anders aus?

########## EDIT ####################

Gestern habe ich mit einem Kollegen zusammen wirklich alles ausprobiert:
  • Oracle Client 9i normaler Client- Umgebungsvariablen in ihrer ganzen Vielfalt
  • Oracle Client 10g Instant Client- wieder mit allen Variablen getestet
  • Nach Konsultation des Oracle-Forums verschiedene Variationen von "kopieren sie die DLL-Datei X in Ordner Y dann klappt sicher alles!" probiert
  • Entfernen sie aus der TNS.ora alle Leerzeichen, damit PHP sie richtig parsen kann - dann klappt sicher alles!
- alles ohne Erfolg

Der PHP-Code an dieser Stelle sie so aus, sollte aber korrekt sein:
PHP:
 $db_user = 'meinUser';
 $db_pw   = 'meinPW';
 $db_host = 'meinHost';
 $db_name = 'meinDBName';

// Hier habe ich verschiedene Anmeldemethoden probiert.
//if(!$conn = OCILogon($db_user,$db_pw,$db_name)) { 
if(!$conn = oci_connect($db_user,$db_pw,$db_name)) {
   echo '<font color="red">Konnte keine Verbindung zur Datenbank herstellen!</font>';
   }
 else {
   echo '<font color="leaf">Zu einer Oracle-DB verbinden: <b> ERFOLGREICH!</b></font><p>';
   //OCILogOff($conn);
   oci_close($conn);
 }

Dann haben wir mal die PHP-Version von 5.1.2 auf 5.0.4 gewechselt und es gab tatsächlich eine Veränderung:
Code:
[26-Apr-2006 17:58:15] PHP Warning:  ocilogon() [<a href='function.ocilogon'>function.ocilogon</a>]: _oci_open_server: ˜Õ‚ in ...\php-skript\test\funk_test.php on line 56

Die Fehlermeldung ist tatsächlich so aufgetreten. Die Sonderzeichen sind keine Modifikation von mir!(Nebenbei verändern sich die Sonderzeichen bei fast jedem Aufruf der Seite auch noch :suspekt: ) Nun ist diese Meldung leider nicht wirklich aufschlussreich... :(

Allerdings weiß ich nicht genau, ob es tatsächlich ein anderer Fehler ist. Es könnte sich auch immer noch um das gleiche Problem handeln, nur eben mit dem Fehlertext der anderen PHP-Version.

Irgendwas läuft da ziemlich falsch! Aber der Webserver und der Oracle-Server laufen absolut perfekt. Ich kann es mir nicht erklären.
 
Zuletzt bearbeitet:
HEUREKA, es klappt jetzt endlich Nach langem Suchen im offziellen Oracle-Forum bin ich der Lösung auf die Spur gekommen: Dem Internetuser fehlten simple Zugriffsrechte auf die Oracle-Ordner und Dateien.

Wie man das Problem löst:
  • Oracle Client neu installieren ("Laufzeit"- Installation reicht, restliche Einstellungen "default")
  • Inet- User braucht Zugriffsrechte auf folgende Dateien:
  • + Oracle-Installationspfad (besonders Unterordner "bin")
  • + "tns_names.ora" (SEHR WICHTIG)
  • Umgebungsvariablen festlegen:
  • + ORACLE_HOME = "C:\oracle\ora92"
  • + TNS_ADMIN = "C:\oracle\ora92\network\ADMIN"
  • + NLS_NAMES = AMERICAN
  • IIS neu starten und das Problem sollte gelöst sein

(Sorry für das mehrfach- Posting- kommt nicht wieder vor. Ich wollte nur sicherstellen, falls jemand anderes auch mal dieses Problem haben sollte, er eine vollständigen Lösungsansatz findet.)
 
Zuletzt bearbeitet:
Zurück