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 であり (現在も動作しています)、他の 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には三つそれらの 1 つです。(cgi/
は一般的な CGI/FCGI 用、apache2/
は Apache PHP モジュール用、cli/
は PHP がコマンド ラインから使用される場合用です。)