ebenfalls OCI8 auf der Console - undefined function

Irgendwelche Probleme mit XAMPP für Linux? Dann ist hier genau der richtige Ort um nachzufragen.

ebenfalls OCI8 auf der Console - undefined function

Postby sugusmuc » 21. September 2005 14:54

Hallo!

Ich hatte mich mit Christian schon kurzgeschlossen, von dem es einen ähnlichen Thread gab, half mir aber noch nicht weiter...

Folgendes: Ich will per CLI auf eine Oraclebank zugreifen.
Mein CLI-Skript funktioniert zwar mit ora_logon (also liegt es nicht an den ENV-Variablen, auch wenn ich das sicherheitshalber auch ausprobiert habe), aber nicht mit ocilogon (OCI8) - da bekomme ich die Meldung: undefined function ocilogon()
Im Webbrowser funktioniert auch OCI8!

Und zwar passiert das auf zwei Servern, einmal auf einem mit XAMPP für Linux 1.4.15 und SuSe 9.2.,
einmal auf unserem älteren Server mit folgenden Sttings:
phpinfo.php: PHP Version 4.2.3
Configure Command: './configure' '--with-oracle=/opt/oracle/product/92'
'--with-apache=../apache_1.3.27'
(hier ist OCI8 nicht aufgelistet, aber ..)
oci8
OCI8 Support enabled
Revision $Revision: 1.169.2.3 $
Oracle Version 9.0
Compile-time ORACLE_HOME /opt/oracle/product/92
Libraries Used
Apache/1.3.27
SuSe Linux Enterprise Server 7

Any hints???? Ich wär Euch sehr dankbar, hab ich schon halb totgesucht im Web...

Danke und viele Grüße, Sugus
sugusmuc
 
Posts: 64
Joined: 19. August 2004 16:57
Operating System: Linux Suse 64-bit 11 SP 2

Postby Wiedmann » 21. September 2005 15:04

aber nicht mit ocilogon (OCI8) - da bekomme ich die Meldung: undefined function ocilogon()

Das PHP-Handbuch lässt vermuten, dass man hier oci_connect() benutzen muss (bei PHP5).

Asonsten, um das sicherzustellen, wird mit dem CLI die OCI8-Extension bei phpinfo() überhaupt mit aufgelistet?
Wiedmann
AF Moderator
 
Posts: 17102
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby sugusmuc » 22. September 2005 11:20

Danke für die Antwort.

Auf dem einen Server läuft aber wie gesagt noch php 4.2.3, da MUSS es noch ocilogon sein, in php5 sollte es aber auch noch gehen.
Das ist es also leider nicht.

phpinfo über CLI sagt:
'--with-oci8=shared'

bzw. weiter unten dann:

dbx

dbx support => enabled
dbx version => 1.1.0
supported databases => MySQL
ODBC
PostgreSQL
Microsoft SQL Server
FrontBase
Oracle 8 (oci8)
Sybase-CT
SQLite

Außerdem werden alle ENV-Variablen durch das Script richtig gesetzt (wenn ich IM Skript phpinfo aufrufe, bekomme ich brav ORACLE_HOME, ORACLE_SID, ORACLE_BASE, TNS_ADMIN, LD_LIBRARY_PATH, NLS_LANG, ORA_NLS33).

Hm..... ???? :(

Grüße, Sugus
sugusmuc
 
Posts: 64
Joined: 19. August 2004 16:57
Operating System: Linux Suse 64-bit 11 SP 2

Postby Wiedmann » 22. September 2005 11:39

Auf dem einen Server läuft aber wie gesagt noch php 4.2.3,

Zu deinem Server kann ich nichts sagen. Wir sind hier ja bei "XAMPP für Linux", also reden wir über XAMPP:
Welche XAMPP Version hast du und welches PHP benutzt du da für die Tests?

in php5 sollte es aber auch noch gehen.

Darauf würde ich mich nicht verlassen. Eine Function die deprecated ist (und das ist sie schon ziemlich lange) kann an irgendeinem Punkt auch mal rausfliegen. Aber mangels Oracle kann ich dir das hier nicht definitiv sagen.

phpinfo über CLI sagt:
'--with-oci8=shared'

Du lädst aber auch diese Extension in der "php.ini"?

bzw. weiter unten dann:
Code: Select all
dbx
supported databases => Oracle 8 (oci8)

Na was die Extension DBX unterstützt ist ja hier völlig egal. Du willst ja die OCI8-Extension direkt benutzen.


Wie gesagt:
Schau ob die OCI8-Extension überhaupt vorhanden ist (geladen wird), und wenn ja kannst du schauen welche Funktionen diese Extension überhaupt kennt (bei deiner Installation).
Wiedmann
AF Moderator
 
Posts: 17102
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby sugusmuc » 22. September 2005 16:57

Hei und vielen Dank erst mal wieder,

wann immer auch bei mir OCI8 laufen wird - bis dahin werde ich jedenfalls sehr viel gelernt haben!!!
Also, auf jeden Fall wird die Sache nicht einfacher durch die zwei verschiedenen Server und ihre Konfigurationen....
Bei dem mit dem (seit heute nicht mehr neuestem) XAMPP 1.4.15 war tatsächlich die OCI8-Library nicht geladen.
Hab nun zweilerlei versucht:
Dynamisches Nachladen mit dl("oci8.so"), sowie Eintrag in der php.ini
(extension="oci8.so").

Beides mal bekomme ich die selbe Fehlermeldung (die der php.ini dadurch, dass ich mir zum Debuggen die Startfehlermeldungen ausgeben lasse):

PHP Startup: Unable to load dynamic library '/opt/lampp/lib/php/extensions/no-debug-non-zts-20041030/oci8.so' - libclntsh.so.9.0: cannot open shared object file: No such file or directory in Unknown on line 0

Und wenn ich ein Testscript über Kommandozeile aufrufe und mit -C die php.ini explizit übergebe, meckert php über ein unerwartetes Komma in der Zeile 70.

Die Rechte müßten auch stimmen: gehört alles root, die Extension ist executable. Was hab ich denn nun noch falsch gemacht?

Das mit DBX - da hab ich natürlich was verwechselt.

Welche Varianten auf dem älteren Rechner noch existieren, spare ich mir für heute mal lieber (dort IST nämlich OCI8 aktiv, aber keine Extension vorhanden, die geladen werden könnte.... Also ist es vermutlich reinkompiliert. Aber dann müßte es doch auch über CLI funktionieren...).

Bin immer wieder dankbar für jeden Hinweis.

Viele Grüße, Sugus
sugusmuc
 
Posts: 64
Joined: 19. August 2004 16:57
Operating System: Linux Suse 64-bit 11 SP 2

Postby Wiedmann » 22. September 2005 17:27

PHP Startup: Unable to load dynamic library '/opt/lampp/lib/php/extensions/no-debug-non-zts-20041030/oci8.so' - libclntsh.so.9.0: cannot open shared object file: No such file or directory in Unknown on line 0

Also geh ich jetzt mal davon aus das die Datei "oci8.so" tatsächlich dort vorhanden ist.

Diese Datei scheint auf eine weitere Shared-Lib zuzugreifen, die "libclntsh.so.9.0". Überprüfen und wo "oci8.so" die Datei sucht kannst du mit "ldd". Diese Datei sollte eigentlich in "$ORACLE_HOME/lib" sein?
Wiedmann
AF Moderator
 
Posts: 17102
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Merci!

Postby sugusmuc » 22. September 2005 17:44

Das ist der richtige Tip, danke!

Sorry, ich vergaß: ja, die oci8.so ist da (auf dem XAMPP-Rechner, dem neueren - auf dem anderen eben nicht)

Und wenn diese Erweiterung schon beim Laden auf etwas zugreift, was im ORACLE_HOME liegt, ist auch klar, daß er nichts findet,.. der Client ist dort nicht installiert - ich dachte, die Funktionen von oci8 sind unhangängig von Oracle, greifen erst bei Ausführung auf das Oracle-Verzeichnis zu und meckert halt dann, daß er z.B. die tnsnames.ora nicht findet o.ä. Ich habs auf diesem Rechner nur mal ausprobiert, weil das PHP aktueller ist als auf dem anderen.

OK, auf den Oldie-Rechner wird jetzt dann eh auch bald mal XAMPP aufgespielt. Aber vorher muß ich noch kapiert haben, was jetzt da das Problem ist - allerdings ist das keine XAMPP-Installation.....

Vielen Dank erst mal!

Viele Grüße, Sugus
sugusmuc
 
Posts: 64
Joined: 19. August 2004 16:57
Operating System: Linux Suse 64-bit 11 SP 2


Return to XAMPP für Linux

Who is online

Users browsing this forum: No registered users and 13 guests