Call to undefined function oci_connect()

Hallo zusammen,

ich sitze nun schon ein paar Stunden dran und bekomme es nicht zum laufen.

Ziel ist die Verbindung zu einer oracle-DB.

dafür benötigt wird folgendes Script:

$conn = oci_connect($username, $passwort, $db);

leider bekomme ich dabei immer folgende Meldung:

Fatal error:  Call to undefined function oci_connect() in [Zentrale Funktionen\Oracle\conn] on line 7

und das obwohl das Log sagt, das die Datei
geladen werden konnte:


28.01.2012 14:50:12.218 |     0 | MESSAGE | ScriptEngine         | >Erweiterung: php_oci8.dll
28.01.2012 14:50:12.218 |     0 | MESSAGE | ScriptEngine         | >Erweiterung: php_oci8_11g.dll
28.01.2012 14:50:12.265 |     0 | MESSAGE | ScriptEngine         | >Erweiterung: php_pdo_oci.dll

bin ein wenig ratlos

Heisst der Eintrag im Log wirklich geladen oder nur gefunden und versucht zu laden?
Möglicherweise kann die Extension die Oracle Client-Libraries nicht finden oder laden. Wozu sind 2 verschiedene oci extensions geladen? Schau doch erstmal mit phpinfo(); nach, ob und was dort bei oci8 steht.

<edit> Wo hast Du oci8 für PHP5.4 gefunden? In paresys Extensionpacket sind sie nicht drin </edit>
Tommi

Also sie tauchen zumindest in der php.ini auf…daher gehe ich davon aus, das sie geladen sind.

Ich habe die DLL, aus dem RC6 von PHP 5.4.
dachte mir das wenn wir hier schon so weit „vorne“ mitspielen sollte das funktionieren…

Ich habe das bei mir am Laufen. Wichtig ist, das Du die 32bit-Version des Clients verwendest. Vorher war es bei mir genauso, das Log sagt geladen, war aber nicht, wie mir phpinfo bestätigt hat. Der OracleClient muss im Path oder im IPS-Verzeichnis liegen(das habe ich mit dem InstantClient gemacht). Dann klappts auch mit OCI_CONNECT.

HTH
Tommi

Ich fasse das mal zusammen:

  • InstantClient Windows 32 bit installieren
  • Path: Variable auf das InstantClientverzeichnis/bin nehme ich an…

muss noch irgendwas in den ext Ordner ???

  • InstantClient Windows 32 bit installieren

yep

  • Path: Variable auf das InstantClientverzeichnis/bin nehme ich an…

Da gibt es kein „bin“. In den Path kommt das Verzeichnis mit den oci*.dlls und ora*.dlls.

muss noch irgendwas in den ext Ordner

die php_oci.dlls

Außerdem muss man die TNS_ADMIN-Variable noch auf das Verzeichnis mit der tnsnames.ora/sqlnet.ora setzen, wenn man nicht native Namesauflösung macht sowie sinnvollerweise auch noch die NLS_LANG-Variable auf einen unterstützen Wert setzen.

Tommi

alles gemacht und es will trotzdem nicht…

$connect = oci_connect($db_user, $db_pass, '//192.168.182.30:1521/DAPOR');

ergebnis :

Fatal error:  Call to undefined function oci_connect() in [Zentrale Funktionen\Oracle\conn] on line 24
PHP-Error-Error: Call to undefined function oci_connect()
   Error in Script D:\IP-Symcon\scripts\oracle.conn.php on Line 24

dabei habe ich die pdo_oci im Ext Ordner und die wird auch geladen…

Hallo,
ich denke da musst du PHP_OCI8.DLL bzw. PHP_OCI8_11G.DLL je nach Oracleversion nutzen !!

… mein kurzer Test:


$c=OCILogon("username", "passwort", "hostname");

if ($c)
   {
    echo("Connect erfolgreich mit OCILogon");
   }
else
   {
    echo("Connectfehler mit OCILogon");
   }


echo("
");

	  
$conn = oci_connect("username", "passwort", "//hostname/side");
if($conn)
  {
   echo("Connect erfolgreich");
  }
else
  {
   echo("Connect fehlerhaft");
  }

ECHO-Ausgabe:

Connect erfolgreich mit OCILogon
Connect erfolgreich

Schau mal ins Logfile ob Du vielleicht eine falsche PHP_OCI8.DLL hast und diese nicht geladen wird !!!

tgusi74