Mailinglisten-Archive |
> From: "Dario Bagnoli (SAT.1 Mainz)" <dario.bagnoli_(at)_sat1.de> > ich nutze eine Oracle8-Datenbank und versuche Oracle klar zu machen, > deutsche Datensätze zurückzuliefern. Unter SQL-Plus funktioniert dies. > Der Zugriff über PHP liefert jedoch standardmäßig den englischen > Zeichensatz. > Während nun > PutEnv("ORACLE_DOC=/oracle/doc"); > PutEnv("ORACLE_HOME=/oracle8"); > PutEnv("ORACLE_SID=......."); > klappt, führt nun die Zeile > PutEnv("NLS_LANG=GERMAN_AMERICA.WE8ISO8859P1"); > dazu, daß kein anschließender Datenbank Login mehr möglich ist > (Ora_Logon). > Diese Parameter ist jedoch im Environment des Datenbank-Users notwendig > und unter UNIX auch so gesetzt. > Unter PERL führt das Setzen genau dieses Parameters auch zum gewünschten > Ziel (!). PHP 3.0.15 scheint das weniger zu interessieren. > Hmmm ? > Vielleicht dem Webserver klarmachen (Apache 1.3.12) ?? Also ich habe schlechte Erfahrungen (es klappte halt nicht) mit putenv() gemacht und finde es schon erstaunlich das dein PutEnv("ORACLE_DOC=/oracle/doc") usw. funktioniert. An "NLS_Lang" bin ich auch erst gescheitert zumal es in vielen Beispielscripts so gemacht wird. Folgendes Hilft und ist meines erachtens auch ganz sinnvoll. Erstelle eine lokale Datei namens /usr/local/oracle.env (natuerlich mit deinen Werten!) # 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 fuer deinen Oracleuser und sonstige Sachen koenntest du dann ueber den Eintrag: # ORACLE-Variablen belegen if test -f /usr/local/oracle.env; then . /usr/local/oracle.env fi in .bashrc bzw. .profile Einfuegen. Das gleiche klappt natuerlich auch im Script "apachectl" das unter /path/to/apache/bin liegt. Gruss Joerg ps: sollte der Server eine andere Sprache (Zeichensatz) fuer die DB haben als dein Client hilt evtl die Convertfunktion von Oracle. Bsp: "SELECT spalte1,convert(spalte2,'WE8PC850','WE8ISO8859P1') FROM table" und mit dem 8er Client koenntest du doch auch die OCI anstelle der ORA Funktionen nehmen. -- 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