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:レスポンダーエラー
ご協力いただきありがとうございます!
最後に、CentOSでは誰もユーザーからメールを送信できませんでした。 WHMから2つの設定を編集する必要がありました。
デフォルトでは、以下の2つの設定はオンでした。オフにすると、誰もメールを送信できなくなりました。
送信SMTPをroot、exim、およびmailmanに制限する(FKA SMTP Tweak)
「誰も」がメールを送信しないようにする
誰かがこれから利益を得ることができることを願っています。よろしく!
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
許可を有効にします。