я только что понял, что mail()
функция не работает
Я работаю под Debian, я установил postfix, потому что друг сказал мне это (хотя я не настраивал его).
Когда я выполняю phpinfo (), я получаю:
sendmail_path /usr/sbin/sendmail -t -i /usr/sbin/sendmail -t -i
но в этих каталогах у меня нет ничего похожего sendmail
У вас есть идея, что мне делать, чтобы mail () работал?
Спасибо
В Unix большинство программ полагаются на MTA (агент передачи сообщений) для передачи почты. Когда программа хочет отправить сообщение, она выполняет /usr/sbin/sendmail
и выдает все сообщение в стандартном вводе.
Sendmail MTA был первым, кто работал таким образом (и работает до сих пор), а другие MTA следуют тому же соглашению о предоставлении /usr/sbin/sendmail
программа.
[В этом ответе Sendmail является исходным MTA, и sendmail
(нижний регистр) /usr/sbin/sendmail
(который поставляется со всеми используемыми в настоящее время MTA).]
PHP 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 используется из командной строки.)