externes Programm mit Umgebungsvariablen aufrufen, wie geht's

vop

Erfahrenes Mitglied
Hi Leute.

Ich habe folgendes Problem.
Per cron-job rufe ich regelmäßig ein (lokales) php-Script auf, welches seinerseits verschiedene lokale Programme startet, um Daten zu aktualisieren.

Der Einfachheit halber habe ich den php-Scriptaufruf in ein shellscript verfrachtet, welches beispielsweise so zu starten ist:
/frei/php/markenupdate
und folgenden Inhalt hat:

#!/bin/bash
# marken-update starten
/usr/bin/php /frei/php/marken_update.php /frei/php/marken_update.config

Starte ich nun mit at 23:00 das Script /frei/php/markenupdate, dann läuft alles wie es soll. Mache ich dagegen einen cron-job daraus, so wird die UTF-8-Kodierung innerhalb der externen Programmaufrufe zu einem Problem.

Bei meinen Tests und vor allem mit Hilfe des Forums habe ich schon einen Teilerfolg erzielen können: Ich weiß nun, dass es mit den Umgebungsvariablen zusammen hängt.
(Siehe: http://www.tutorials.de/tutorials219310.html)

Wie kann ich nun einen Programmaufruf von php aus starten und Umgebungsvariablen mitgeben?

In meinem PHP-Script erfolgen die Programmaufrufe derzeit so:
$Befehl = " markit_imp -to".$ImportModus." ";
$Befehl .= "-d".$MySql_MarkitDB." ";
$Befehl .= "-h".$MySql_Host." ";
$Befehl .= "-u".$MySql_User." ";
$Befehl .= "-q".$Datenquelle." ";
$Befehl .= "-p".$MySql_Pass." ";
$Befehl .= $ImpFileName." ".$ExpFileName." ".$LogFileName;
$Ergebnis = `$Befehl`;

Mein Versuch, den Befehl direkt um die Umgebungsvariable zu ergänzen, etwa so
$UMGEBUNGSVARIABLE = "/usr/bin/env LANG=de_DE.UTF-8 ";
$Befehl = $UMGEBUNGSVARIABLE . " markit_imp -to".$ImportModus." ";
....

lieferte leider auch nicht den gewünschten Erfolg.

Hat da evtl noch einer von Euch eine Idee?

Vielen Dank
vop
 
Zurück