martina: Fehler bei oci_connect()

Ich musst mit oci_connect eine Verbindung zu einer Oracle Datenbank machen. Leider bekomme ich die folgende Fehlermeldung:

Fatal error:  Call to undefined function oci_connect() in c:\Inetpub\wwwroot\PHP\connect.php on line 5

Im Code sieht es so aus:

$db = "Datenbankname";
$c1 = oci_connect("benutzername", "passwort", $db);

Was mache ich falsch?

Danke für die Antworten

  1. hallo,

    du nutzt PHP5?

    mfg
    deni

    1. hallo,

      du nutzt PHP5?

      Ja

  2. echo $begrüßung;

    Fatal error:  Call to undefined function oci_connect() in c:\Inetpub\wwwroot\PHP\connect.php on line 5

    Was mache ich falsch?

    Du hast dich nicht vergewissert, dass die OCI-Funktionen in PHP zur Verfügung stehen. phpinfo() muss einen Abschnitt "oci8" ausgeben.

    Das Freigeben der oci-Funktionen erfolgt durch Entfernen des Kommentars der "extension=php_oci8.dll"-Zeile in der php.ini. Möglicherweise muss auch noch das extension_dir richtig gesetzt werden. Weiterhin muss ein Oracle-Client auf dem System installiert sein.

    Wenn es dann immer noch Fehler gibt, solltest du den verwendeten Webserver, die PHP-Version und die API (CGI/Modul/...) angeben.

    echo "$verabschiedung $name";

    1. Du hast dich nicht vergewissert, dass die OCI-Funktionen in PHP zur Verfügung stehen. phpinfo() muss einen Abschnitt "oci8" ausgeben.

      Den Abschnitt oci8 gibt es nicht.

      Das Freigeben der oci-Funktionen erfolgt durch Entfernen des Kommentars der "extension=php_oci8.dll"-Zeile in der php.ini. Möglicherweise muss auch noch das extension_dir richtig gesetzt werden. Weiterhin muss ein Oracle-Client auf dem System installiert sein.

      Die Zeile extension=php_oci8.dll habe ich aus der php.ini gelöscht.
      Leider funktioniert es immer noch nicht. Was müsste ich bei der extension_dir eingeben? Ein Oracle-Client ist auf dem System soweit ich weiss, vorhanden.

      1. echo $begrüßung;

        Das Freigeben der oci-Funktionen erfolgt durch Entfernen des Kommentars der "extension=php_oci8.dll"-Zeile in der php.ini.

        Die Zeile extension=php_oci8.dll habe ich aus der php.ini gelöscht.

        Nicht die Zeile, nur das aus der Zeile einen Kommentar machende Semikolon vorndran muss entfernt werden, damit diese zur Geltung kommen kann und PHP die DLL lädt.

        Leider funktioniert es immer noch nicht. Was müsste ich bei der extension_dir eingeben?

        Das muss auf das Verzeichnis zeigen, in dem sich die o.g. php_oci8.dll befindet.

        echo "$verabschiedung $name";

        1. Nicht die Zeile, nur das aus der Zeile einen Kommentar machende Semikolon vorndran muss entfernt werden, damit diese zur Geltung kommen kann und PHP die DLL lädt.

          Habe ich nun gemacht, bekomme aber folgende Fehlermeldung:

          PHP Startup: Unable to load dynamic library './php_oci8.dll' - Das angegebene Modul wurde nicht gefunden.

          Das muss auf das Verzeichnis zeigen, in dem sich die o.g. php_oci8.dll befindet.

          diese wird nicht gefunden...

          1. echo $begrüßung;

            Habe ich nun gemacht, bekomme aber folgende Fehlermeldung:

            PHP Startup: Unable to load dynamic library './php_oci8.dll' - Das angegebene Modul wurde nicht gefunden.

            Das muss auf das Verzeichnis zeigen, in dem sich die o.g. php_oci8.dll befindet.

            diese wird nicht gefunden...

            Dass sie nicht geladen werden kann, kann daran liegen dass sie nicht gefunden wird, oder daran, dass sie weitere DLLs nachladen möchte, die nicht gefunden werden.

            Bei mir (eben grad noch mal getestet) geht's so (PHP unter IIS):

            • Ein Oracle-Client ist vorhanden, wurde aber nicht von mir installiert. Dazu kann ich nichts weiter sagen.
            • Von der PHP-Seite nahm ich "PHP 5.0.5 zip package". (Beim der "installer"-Version fehlen die externen Bibliotheken.)
            • Auspacken der Zip-Datei
            • php.ini-recommended umbenannt/kopiert nach php.ini
            • Zeile 515: extension_dir = "ext/"
            • Zeile 646: extension=php_oci8.dll
            • Zeile 526: cgi.force_redirect = 0  ;Kommentare in der php.ini beachten
            • IIS-Konfiguration: Zuweisen der LW:\Pfad\zu\PHP\php-cgi.exe zur Endung .php

            Für PHP4 ist die Vorgehensweise prinzipiell gleich, nur dass noch der Inhalt des dll-Verzeichnisses in das Verzeichnis der php.exe kopiert/verschoben werden muss.

            Wenn es mit den Hinweisen nicht funktioniert oder du den Apachen verwendest, muss ich passen.

            echo "$verabschiedung $name";

            1. was meinst du hiermit:

              • IIS-Konfiguration: Zuweisen der LW:\Pfad\zu\PHP\php-cgi.exe zur Endung .php
              1. echo $begrüßung;

                was meinst du hiermit:

                • IIS-Konfiguration: Zuweisen der LW:\Pfad\zu\PHP\php-cgi.exe zur Endung .php

                Wenn ein IIS verwendet wird, musst dem ja auch mitgeteilt werden, dass er Dateien mir der Endung .php zum PHP durchreichen soll. Wie das im einzelnen geht kann man im PHP-Handbuch und der Dokumentation des IIS nachlesen.

                echo "$verabschiedung $name";

                1. Mein IIS kann die PHP Datein ausführen.. Das funktioniert.

                  Aber das mit dem oci_connect funktioniert immer noch nicht. Woran könnte es nun liegen?