ich habe gerade festgestellt, dass die mail()
Funktion nicht funktioniert
ich verwende Debian und habe Postfix installiert, weil mir ein Freund das empfohlen hat (obwohl ich es nicht konfiguriert habe).
Wenn ich ein phpinfo() mache, bekomme ich:
sendmail_path /usr/sbin/sendmail -t -i /usr/sbin/sendmail -t -i
aber in diesen Verzeichnissen habe ich nichts wiesendmail
Haben Sie eine Idee, was ich tun muss, damit mail() funktioniert?
Danke
Antwort1
Unter Unix verlassen sich die meisten Programme für die E-Mail-Übertragung auf einen MTA (Message Transfer Agent). Wenn ein Programm eine Nachricht senden möchte, wird es ausgeführt /usr/sbin/sendmail
und gibt die gesamte Nachricht in stdin aus.
Der Sendmail-MTA war der erste, der auf diese Weise funktionierte (und tut dies immer noch), und andere MTAs folgen derselben Konvention zur Bereitstellung eines /usr/sbin/sendmail
Programms.
[In dieser Antwort ist Sendmail der ursprüngliche MTA und sendmail
(Kleinbuchstaben) ist /usr/sbin/sendmail
(was bei allen derzeit verwendeten MTAs dabei ist).]
PHP mail()
folgt der Unix-Tradition und übergibt die Nachricht einfach an die sendmail
ausführbare Datei. Das bedeutet, dass Sie einen MTA benötigen. Sie haben Postfix bereits installiert, was gut ist. EstutSie haben eine sendmail
Binärdatei. Wenn Sie es also nicht haben /usr/sbin/
, müssen Sie es woanders installiert haben – möglicherweise /usr/local/sbin/
, wenn es aus dem Quellcode kompiliert wurde?
Eine Neuinstallation von Postfix könnte das Problem beheben. Wenn dies nicht der Fall ist, aktualisieren Sie Ihre Frage bitte mit Einzelheiten, z. B. wie Sie Postfix überhaupt installiert haben.
Wenn Ihr sendmail
irgendwo anders als ist /usr/sbin/
, müssen Sie die PHP-Konfiguration bearbeiten -- php.ini
. Es ist normalerweise in /etc/php5/
, und Debian hatdreidavon. ( cgi/
ist für generisches CGI/FCGI, apache2/
ist für das Apache-PHP-Modul, cli/
ist für die Verwendung von PHP über die Befehlszeile.)