Ergebnis: Es gibt zwar die Einstellung default_charset in der php.ini, die ändert allerdings nichts am Problem, wenn man sie auf ="UTF-8" setzt.
Also nochmal:
Sollte das encoding der Shell dem des Systems entsprechen, dann müsste php den Befehl
$befehl = "echo 'echo \"Das Fristende für die gesetzte Frist\n \n".$bez."\n \nist noch ".$vorwarntage." Tage entfernt. \n \nDie Frist läuft ab: ".$fuertext." \" | mail -s [b]\"Noch ".$vorwarntage." Tage bis: ".$bez." \"[/b] meine@gmx.de' | at ".$fuerat;
exec($befehl,$ergebnisexec,$status);
eigentlich korrekt ausführen, sonst könnte ich den Betreff ($bez) doch schon per less nicht lesen, oder?
EDIT: Wie man oben an dem AT-Job sieht, wird LANG=C gesetzt. Wenn ich den JOB in der Konsole erstelle, steht da LANG=de_DE.UTF-8.
Ich habe jetzt in meinen php-Befehl LANG=de_DE.UTF-8;export LANG;Restbefehl..
integriert und es funktioniert.
Scheinbar nimmt atd für die Ausführung von Benutzern ohne shell eine Standardshell, die nicht das System-Encoding hat.
Muss ich für meinen Webserver jetzt eine Shell einrichten? Das wäre mir nicht so recht - da bleibe ich dann lieber bei dieser Lösung.