Hi,
ich habe ein PHP-Skript, dass mir einen Emailtext erstellt und unter "/home/user/text.txt" in einer Datei abspeichert. Dieser Emailtext soll signiert und versendet werden.
Wenn ich die text.txt manuell erstelle und folgenden Befehl in die Shell eingebe, dann erhalte ich auch eine signierte Email:
1 2 3 4 5 6 7 | # SHELL-Befehl: openssl smime -sign -signer /home/user/zertifikat.pem -in /home/user/text.txt -from 'Absendername <ab@sender.xyz>' -to 'empf@aenger.xyz' -subject 'Betreff' | sendmail -t # Ab hier PHP: $output = 'openssl smime -sign -signer /home/user/zertifikat.pem -in /home/user/text.txt -from \'Absendername <ab@sender.xyz>\' -to \'empf@aenger.xyz\' -subject \'Betreff\' | sendmail -t'; echo $output; $shellausgabe = shell_exec($output); echo $shellausgabe; |
Kurz um, es funktioniert alles prima.
Jetzt habe ich das ganze in ein PHP-Skript eingebunde und die '' escapt mit \. Die Ausgabe habe ich direkt getestet indem ich mir mit "echo" den String ausgeben lasse und nachgesehen habe, ob alles so wie bei dem obigen Shell-Bfehl aussieht (also dass keine Anführungszeichen fehlen etc.). Leider kommt bei mir keine Email an! Ich erhalte als Ausgabe nur das echo $output, allerdings erhalte ich keinerlei Email und beim echo $shellausgabe erhalte ich auch nichts. Nicht mal eine Fehlermeldung oder ähnliches.
Das obige Skript habe ich mit der Funktion shell_exec() http://de3.php.net/shell_exec als auch exec() http://de.php.net/manual/en/function.exec.php ausprobiert. Beide liefern das gleiche Ergebnis.
Wisst ihr, wie ich an die Fehlermeldung ran kommen könnte? Gibt es da einen Weg über Ubuntu über logfiles in denen es steht z. B. einer History? Ich habe den Verdacht, dass es eine Berechtigungssache sein könnte, da ich den obigen Befehl unter root ausführe, der Webserver unter www-data läuft. Aber wie ich das rausfinden kann, weiß ich nicht.
Danke fürs Lesen! Über Hilfe würde ich mich wirklich freuen!
Bearbeitet von barabbas:
Formatierung gefixt. '' werden vom Forum als Anfang/Ende eines kursiven Strings interpretiert. Die musst du also entweder in Code-Tags stellen oder mit \ escapen.