web-dev-qa-db-ja.com

ブラウザからリクエストが来たときにSMTPconnect()が失敗しました

PHPMailerライブラリを使用してメールを送信するPHPスクリプトがあります。PHPコマンドを使用してSSHでスクリプトを実行すると、メールが完全に送信されます。同じスクリプトのリクエストがブラウザから送信されていますが、失敗して以下のエラーが発生します。

2016-12-17 19:41:24 SMTP ERROR: Failed to connect to server: (0) 2016-12-17 19:41:24    SMTP connect() failed. https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting error

ブラウザのリクエストで機能しない原因がわかりません。

私のスクリプトはAWSにあり、Googleビジネスメールを使用しています。

以下は私のコードスニペットです。

require_once 'PHPMailer-master/PHPMailerAutoload.php';
$mail = new PHPMailer();
$mail->IsSMTP();
$mail->SMTPAuth = true;
$mail->IsHTML(true);
$mail->CharSet = "text/html; charset=UTF-8;";
$mail->SMTPDebug = 2;
$mail->SMTPSecure = 'ssl';
$mail->Host = "smtp.gmail.com";
$mail->Port = 465; 
$mail->Username = "google email address";  
$mail->Password = "password";
$mail->From = $email_from;
$mail->FromName = "Name";
$mail->AddAddress($to);
$mail->Subject = $subject;
$mail->Body    = $message;
$sent = $mail->Send();

助けていただければ幸いです。ありがとう。

編集:0行目の不明にすでにロードされている「モジュール」カールの問題を解決することができました。問題の原因となっているサーバーに2つのPHP.iniファイルがありました。 1つのPHP.iniの名前を変更すると、カールが読み込まれる問題が解決しました。

それでも、誰も使用していないユーザーを使用してメールを送信することはできません。ただし、rootユーザーを使用してメールを送信できます。

WHMで、「「誰も」がメールを送信しないようにする」という設定に気づきました。デフォルトでは、誰も電子メールを送信できないことを意味していました。したがって、オフにすると、誰も使用せずにメールを送信できるはずです。しかし、それをオフにした後でも、誰も使用していないユーザーを使用して電子メールを送信できない理由はわかりません。

編集済み:Apacheサーバーのログを確認したところ、ブラウザからのリクエストごとに以下のエラーが生成されていることがわかりました。このエラーが何であるかわからない。私はこれについて研究しています。誰かがこの問題を知っていれば幸いです。ありがとうございました! ******************エラーログ****************************** * [Tue Dec 20 12:38:45.875892 2016] [ssl:error] [pid 913](101)ネットワークに到達できません:[client xx.xx.xx.xx:151] AH01974:OCSPレスポンダーに接続できませんでした 'ocsp .comodoca.com '[Tue Dec 20 12:38:45.875929 2016] [ssl:error] [pid 913] AH01941:stapling_renew_response:responder error [Tue Dec 20 12:38:46.181171 2016] [ssl:error] [pid 919 ](101)ネットワークにアクセスできません:[クライアントxx.xx.xx.xx:848] AH01974:OCSPレスポンダー 'ocsp.comodoca.com'に接続できませんでした[TueDec 20 12:38:46.181211 2016] [ssl:error ] [pid 919] AH01941:stapling_renew_response:レスポンダーエラー


ご協力いただきありがとうございます!

1
user_387909

最後に、CentOSでは誰もユーザーからメールを送信できませんでした。 WHMから2つの設定を編集する必要がありました。

設定を変更するためのパス。

WHM->サーバー構成->設定の微調整-> [メール]タブ

デフォルトでは、以下の2つの設定はオンでした。オフにすると、誰もメールを送信できなくなりました。

  1. 送信SMTPをroot、exim、およびmailmanに制限する(FKA SMTP Tweak)

  2. 「誰も」がメールを送信しないようにする

誰かがこれから利益を得ることができることを願っています。よろしく!

1
user_387909

Phpをssh上のrootとして実行していますか?または、Webサーバーよりも高い権限を持つ別のユーザーですか?

Webサーバーが実行されているユーザーがわかっている場合は、そのユーザーとしてphpスクリプトを実行してみてください。 phpinfo()を使用して、実行しているユーザーを確認できます。そのユーザーとしてスクリプトを実行する1つの方法は次のとおりです...最初にroot、またはSudoを実行できるユーザーであり、次のように入力してWebサーバーユーザーに変更します。

Sudo -u www-data bash

明らかに、www-dataをWebサーバーユーザーの名前に置き換えます(異なる場合)。bashを、bashがない場合はサーバー上の有効なシェルに置き換えます。 Webサーバーユーザーのbashプロンプトがある場合は、idを実行して、自分が本当に適切なユーザーであることを確認してから、そのユーザーのコマンドラインからPHPスクリプトを実行してみてください。同じエラーの場合、それは権限の問題である必要があります。それが機能する場合は、少なくとも除外しました。

権限の問題であると思われる場合は、次のことを試してください。

Sudo setsebool -P httpd_can_sendmail 1
Sudo setsebool -P httpd_can_network_connect 1

許可を有効にします。

1
bao7uo