PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Befehlsinterpretation PHP / Apache



JeWe
03.05.07, 15:41
Hallo,

das problematische System besteht aus Red Hat Enterprise 4.0, Update 4 / Apache 2.0.52 und PHP 4.3.9, das Problem ist das folgende:

Es existiert eine Weboberfläche, hinter der sich im großen und ganzen simple Kommandozeilenaufrufe verbergen. Also sowas wie ein Klickibunti der Kommandozeile ;) Nun werden einige Befehle scheinbar "englisch interpretiert" und ergeben damit auch eine "englische Antwort". Derselbe Befehl auf der Kommandozeile ergibt eine "deutsche Antwort". Mit einem Red Hat 3.0-System funktioniert alles so, wie es soll.

Was ich bisher bei allem Googeln und Suchen gefunden habe, ist, dass Red Hat 4 als API statt apache2filter nun apache2handler verwendet. Hat dies etwas damit zu tun ?

Was muss ich machen, damit die Befehle auch in der Red Hat 4-Version deutsch interpretiert werden ?

instinctless
03.05.07, 23:29
ähm was sagt denn deine environment variable LANG=?

JeWe
04.05.07, 07:12
Die ist ok:

echo $LANG
de_DE.iso885915@euro

JeWe
07.05.07, 15:17
Keiner eine Idee ? Zur Verdeutlichung gebe ich nochmal ein Beispiel, was genau da passiert. Auf die Eingabe eines Befehls aus der Kommandozeile heraus bekomme ich folgende Ausgabe:

L. Kg. Globale Kg. Ziel Pos. Proz. erl. Status
------ ---------- ----------- ---- ---------- ------
1 xxxxxx:1 D001ab60pp 000001 000 D (Device Busy)

Die Ausgabe auf denselben Befehl, diesmal aus der PHP-Umgebung heraus:

L. jid Global jid Destination Rank Percentage State
1 xxxxxx:1 D001ab60pp 000001 000 D (Device Busy)

Bei der zweiten Ausgabe erfolgt also eine "englische" Antwort...

Woran liegt das ?

DukePyrolator
07.05.07, 15:40
Wenn Du eine Shell startest, werden vorher einige automatische Scripte ausgeführt, wo u.a. auch die Umgebungsvariable für die Sprache gesetzt wird.

Wenn Du den Befehl direkt über Apache/PHP startest, ist diese Umgebungsvariable entweder noch nicht gesetzt oder hat einen falschen Wert. Das müsstest Du nachprüfen können wenn Du Dir über PHP mal die aktuell gesetzten Umgebungsvariablen anzeigen lässt.

Möglicherweise ist das irgendwo in der Apache/PHP config hinterlegt.

JeWe
11.05.07, 10:26
Habs jetzt selbst gefunden, hatte weniger mit der PHP-Umgebung, als mehr mit dem Apache-Startskript zu tun:

/etc/rc5.d/S85httpd

Dort befand sich der folgende Eintrag:
HTTPD_LANG=${HTTPD_LANG-"C"}

Die Variable auf einen deutschen Wert geändert, schon läufts so, wie es laufen soll...