Mailinglisten-Archive |
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