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