[Eisfair] mail, php via cron job

Marcus Roeckrath marcus.roeckrath at gmx.de
So Aug 13 17:03:53 CEST 2017


Hallo Ulrich,

Marcus Roeckrath wrote:

>>>> <?php
>>>> $empfaenger = "Ulrich<Ulrich at dort.de>";
>>>> $absender = "Ulrich<Ulrich at meins.de>";
>>>> $reply = "Administrator Ulrich<admin at meins.de>";
>>>> $subject = "Infomail vom Server" ;
>>>> $message = "Testtext !"

Hier fehlt ein ; - wohl Typo, weil das auch auf der Kommandozeileknallen
würde.

>>>> $headers = 'From:' . $absender . "\n";
>>>> $headers .= 'Reply-To:' . $reply . "\n";
>>>> $headers .= 'X-Mailer: PHP/' . phpversion() . "\n";
>>>> $headers .= "Content-type: text/html\n";
>>>> mail($empfaenger, $subject, $message, $headers );
>>>> ?>
>> 
>>> Was ist mail?
>>> Eine interne php-Funktion? ja!
>> mail ist eine interne php Funktion zum Versenden von mails
>> 
>>>> Da sind keine Pfad bezogenen Infos drin.
>>> Eben, deren Fehlen kann unter fcron zum Problem werden.
>>> Aus Sicherheitsgründen hat der fcron nur eine eingeschränkte Umgebung.
>>> 
>> Wo sollte ich denn i.o.g. Beispiel Pfade angeben?
> 
> Versuche wirklich mal das php-Skript zu zwingen, einen Errorlevel > 0
> zurückzugeben, damit fcron eine Fehlermail rausschmeisst.

Wenn ich Dein Skript als cronjob mit exit(1); am Ende laufen lasse, bekomme
ich von fcron folgende Mail:

sh: sendmail: command not found
Job '/usr/bin/php -f /root/mail.php' terminated (exit status: 1) (mailing
output)

Was heißt das?

Die interne mail-Funktion bemüht sendmail, welches als /usr/sbin/sendmail
vorliegt.

/usr/sbin liegt nicht im Pfad von fcron, daher ist der cronjob wie folgt zu
definieren:

PATH=$PATH:/usr/sbin ; export PATH ; /usr/bin/php
-f /var/www/htdocs/meinpfad/email.php

Damit sollte es nun auch bei Dir funktionieren, jedenfalls gehts hier.

-- 
Gruss Marcus


Mehr Informationen über die Mailingliste Eisfair