phpbar.de logo

Mailinglisten-Archive

[php] Installation von PHP4 mit OCI ?

[php] Installation von PHP4 mit OCI ?

Joerg Behrens behrens_(at)_takenet.de
Tue, 04 Jul 2000 20:13:44 +0200


Andreas Keller schrieb:
> 
> Björn Schotte schrieb:
> >
> > Vermutung: hat dein Apache alle Umgebungsvariablen von
> > Oracle mitbekommen bzw. setzt dein Script diese?
> 
> In meinem Script setze ich die Variablen:
> PutEnv("ORACLE_HOME=/usr/local/oracle/app/oracle/product/8.0.5");
> PutEnv("TWO_TASK=$ORACLE_HOME/network/admin/tnsnames.ora");
> PutEnv("ORACLE_SID=oraserv");
> 
> Ich habe ziemlich widersprüchliches über die TWO_TASK-Umgebungsvariable
> gefunden. Zum einen, dass die Variable notwendig ist, um unter PHP auf einen
> Oracle Server zuzugreifen. Tatsache ist, daß ohne diese Variable Oracle die
> Fehlermeldung ORA-12545 bringt (Connect failed because target host or object
> does not exist).
> Mit der Variablen scheint Oracle den Server zu finden, kann aber den
> Servicenamen nicht auflösen. Dabei wird der Servicename ja gerade in
> tsnames.ora definiert (die ora_-Funktionen klappten ja auch).
>  Im übrigen habe ich einen Hinweis gefunden, der zum Einsatz von TWO_TASK
> bei TCP/IP aus Performancegründen abrät. Welche Variablen müssen denn ausser
> ORACLE_HOME bei PHP4 gesetzt werden, um das OCI zu nutzen? Wo finde ich eine
> docu zu PHP4 und OCI?

Mit Umgebungsvariablen direkt im PHP-Script setzten haben auch schon
andere Leute hier in der ML im Bezug mit Oracle Probleme gehabt.
Schau mal lieber ob du dem ApacheUser das Env. verpassen kannst.
Desweiteren ist mein OracleEnv. ein bisschen laenger. Versuch man
folgendes in eine Datei zuschreiben

in /usr/local/oracle.env (Name der Datei. Ausfuehrbar!)
     # Oracle 8.0.5.1
     export ORACLE_SID=ORCL
     export ORACLE_TERM=vt220
     export ORACLE_BASE=/opt/oracle
     export ORACLE_HOME=$ORACLE_BASE/product/8.0.5.1
     export CLASSPATH=$ORACLE_HOME/jdbc/lib/classes111.zip
     export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$ORACLE_HOME/jdbc/lib
     export PATH=$PATH:/bin:/usr/bin:/usr/local/bin:$ORACLE_HOME/bin
     export TMPDIR=/var/tmp
     export NLS_LANG=GERMAN_GERMANY.WE8ISO8859P1

nun schreibst du in dein Apachestartscript (meistens apachectl )
     # ORACLE-Variablen belegen
     if test -f /usr/local/oracle.env; then
       . /usr/local/oracle.env
     fi
 
Das kannst du auch fuer normale User (User Oracle z.B) in .bashrc oder
.profile machen. Pfade sind natuerlich anzupassen. Ein phpinfo() gibt
dann im Env die angaben mit aus.
Mit dieser Methode hab ich Zugriff mit ORA und OCI ueber PHP3 auf
Oracle. Auf RedHat6.2 habe ich gerade PHP4.0.1pl2 mit Oracle8.05.1
kompiliert aber noch nichts weiter ausprobiert. Meine Suse zickt noch
rum.. beim kompilieren mit Oracle 8.1.6.0
passiert beim Apache start erst folgendes.
Cannot load /usr/local/apache/libexec/libphp4.so into server:
libclntsh.so.8.0: cannot o
pen shared object file: Datei oder Verzeichnis nicht gefunden

Wenn ich nun in /etc/ld.so.conf '/opt/oracle/product/8.1.6.0/lib'
nachtrage bring ein ausfuehren von ldconfig folgende Warnung:
/opt/oracle/product/8.1.6.0/lib/libvbj30ssl.so is not a shared object
file (Type: 768).

Der Apache start scheinbar (ohne Fehlermeldung) ist aber dann aber nicht
in der Prozessliste zu sehen (ps aux | grep httpd). PHP4.0.1pl2 OHNE
Oracle geht funktionert wunderbar. Hat schom jemand Erfahrung mit so
einem stummen Apachen? Die Ausgabe von 'strace' ist einen halben Kilomer
lang und sagt mir als Laien nichts :(

Gruss
Joerg Behrens


-- 
Key fingerprint =  92 7D E0 A6 CF AE EC 32  14 28 EF 0D 57 2A 88 5B
----------------------------------------------------------------------
TakeNet GmbH					Mobil: 0171/60 57 963			
D-97080 Wuerzburg				Tel: +49 931 903-2243				
Alfred-Nobel-Straße 20				Fax: +49 931 903-3025


php::bar PHP Wiki   -   Listenarchive