web-dev-qa-db-ja.com

PHP mail()がubuntu16.04のPostfixで機能しない

OK、この質問はされていると思いますが、私の特定の問題に関連する問題は提起されませんでした。

基本的に、私はサーバーで何をしているのかほとんどわかりませんが、メールを送信し、スパムフォルダーに入らないようにサーバーを構成する必要があります。現在、私が思う主な問題は、_mail.log_ファイルの次のエラーメッセージです。

_error: to submit mail, use the Postfix sendmail command_

_fatal: the postfix command is reserved for the superuser_

私のphp.iniファイルには_sendmail_path = /usr/sbin/sendmail -t -i_があります

Postfixはホスト名で構成されており、コマンドラインからメールを送信すると正常に送信されるため、すべてが正常に機能しますが、CLIではrootとしてログインしているため、アクセスできるので問題ではない可能性があります。 。 _postfix status_を実行すると、次のようになります。

_postfix: Postfix is running with backwards-compatible default settings
postfix: See http://www.postfix.org/COMPATIBILITY_README.html for details
postfix: To disable backwards compatibility use "postconf compatibility_level=2" and "postfix reload"
postfix/postfix-script: the Postfix mail system is running: PID: 13198
_

私はこのプロジェクトに取り掛かっていて、これを迅速に解決する必要がありますが、これを正しく設定する方法については、無数の異なるチュートリアルがすべて本当に異なっているようです。少なくとも、何が間違っていたのか理解できません。

再ハッシュするための主な目標は、PHPを取得して、電話をかけたときに実際にメールを送信することです。

mail($to, $subject, $msg, $headers);

1
Vallier

@bgtvfrに感謝します。私がテストしたとき、それらはすべて機能していました。コマンドラインからのメールの送信は、意図したとおりに正常に機能していました。

mail.logからリストしたエラーは、php.iniファイルが正しく構成されていないことが原因でした。

ある時点でsendmail_path = /usr/sbin/posfixを設定し、それを上記のコードに戻している間、sendmailをポイントしてphp.ini設定をリロードしていませんでした。私はnginxとphp7.0でubuntuを実行していますが、nginxを再起動してもphp設定が再読み込みされないため、次のコマンドを実行する必要がありました。

Sudo /etc/php7.0/fpm/php.ini restart

これがsendmail_path = /usr/sbin/sendmailにリセットされると、意図したとおりに機能し始めました。

1
Vallier