php mail() не работает

Я просто понял, что mail() функция не работает

я нахожусь под Debian, я установил postfix, потому что друг сказал мне (хотя я не настраивал это).

Когда я делаю phpinfo() у меня есть:

sendmail_path   /usr/sbin/sendmail -t -i    /usr/sbin/sendmail -t -i

но в этих каталогах у меня нет ничего подобного sendmail

У вас есть идея, что я должен сделать, чтобы заставить mail() работать?

Спасибо

1 ответ

Решение

В Unix большинство программ используют MTA (агент передачи сообщений) для передачи почты. Когда программа хочет отправить сообщение, она выполняет /usr/sbin/sendmail и дает ему все сообщение в stdin.

Sendmail MTA был первым, кто работал таким образом (и продолжает работать), и другие MTA придерживаются того же соглашения о предоставлении /usr/sbin/sendmail программа.

[В этом ответе Sendmail является оригинальным MTA, и sendmail (строчные) /usr/sbin/sendmail (который поставляется со всеми MTA, используемыми в настоящее время).]

РНР mail() следует традиции Unix и просто передает сообщение sendmail исполняемый файл. Что означает, что вам нужен MTA. Вы уже установили Postfix, что хорошо. Тем не менее, у него есть sendmail бинарный, так что если у вас его нет в /usr/sbin/ тогда вы должны были установить его в другом месте - возможно, /usr/local/sbin/ если скомпилировано из источника?

Переустановка Postfix может решить проблему. Если это не так, пожалуйста, обновите ваш вопрос, указав детали, например, как вы установили Postfix.

Если твой sendmail где-то еще, чем /usr/sbin/, тогда вам придется редактировать конфигурацию PHP - php.ini, Обычно это в /etc/php5/ и Debian имеет три из них. (cgi/ для общего CGI/FCGI, apache2/ для модуля Apache PHP, cli/ для того, когда PHP используется из командной строки.)

Другие вопросы по тегам