2017-01-06 3 views
0

Я получаю эту ошибку с PHPMailer на сервере PHP 5.6.PHPMailer 5.2 OpenSSL Сообщения об ошибках: ошибка: 14090086: SSL-процедуры: SSL3_GET_SERVER_CERTIFICATE: проверка сертификата не выполнена

Предупреждение: stream_socket_enable_crypto(): операция SSL потерпела неудачу с кодом сообщения об ошибках 1. OpenSSL: ошибка: 14090086: SSL подпрограммы: SSL3_GET_SERVER_CERTIFICATE: сертификат верифицировать не удалось в class.smtp.php на линии 344

Интересной вещь я пытаюсь отправить почту через локальный SMTP сервер @ локальный, и я не использую SSL или TLS - это обычный SMTP порта 25.

$mail->SMTPSecure='' 
$mail->SMTPPort //not set 

сервер имеет действительный сертификат SSL, установленный для домен веб-сайта.

Я прочитал документацию по GitHub о сбое проверки сертификата PHP 5.6 и, похоже, не рассматривает этот сценарий.

Я добавил этот код, но по-прежнему получаю сообщение об ошибке:

$mail->SMTPOptions = array(
    'ssl' => array(
     'verify_peer' => false, 
     'verify_peer_name' => false, 
     'allow_self_signed' => true 
    ) 
); 

я думаю главный вопрос, свидетельство того, что SSL, или его отсутствие в его жалуется?

ответ

1

GitHub страница PHPMailer в mentions этого типа ошибки:

This is covered in the troubleshooting docs. PHP 5.6 verifies SSL certificates by default, and if your cert doesn't match, it will fail with this error. The correct solution is to fix your SSL config - it's not PHP's fault!

Я вижу, что вы прошли через трудность создания настроек PHPMailer небезопасные как не рекомендуются в troubleshooting docs. Вы заметили, что для этого требуется PHPMailer 5.2.10?

The correct fix for this is to replace the invalid, misconfigured or self-signed certificate with a good one. Failing that, you can allow insecure connections via the SMTPOptions property introduced in PHPMailer 5.2.10 (it's possible to do this by subclassing the SMTP class in earlier versions), though this is not recommended

Там также предложения для enabling debug output:

$mail->SMTPDebug = 4; 

Если вы посмотрите на вывод отладки можно почерпнуть более полезную информацию.

EDIT: это также не о ваш сертификат, он касается сертификата (если есть), размещенного вашей конечной точкой сервера SMTP.

+0

Вопрос 1. Если я не устанавливаю TLS или SSL, почему он проверяет сертификат вообще? Вопрос 2. Единственная цель этого SMTP-сервера заключается в том, чтобы локальное приложение PHP отправляло уведомления. С SMTP-сервером нельзя подключаться извне. В этом случае, в чем преимущество использования SSL или TLS? я пропустил .10 часть, но я думаю, что, так как я не использую SSL или TLS, что это спорный вопрос? –

+0

A1) Я совсем не уверен. Включите отладку, и вы поймете, что разговор состоится. Ваш SMTP-сервер может настаивать на SSL? A2) Этот вопрос непонятен. Ваше приложение PHP работает на веб-сервере. параметры хоста SMTP для PHPMailer могут указывать локальный или удаленный компьютер, который может или многие из них недоступны с веб-сервера. Опять же, просмотр вывода отладки может дать вам представление о том, что происходит при попытке подключения. –

+1

И должно быть очевидно, что вы не хотите, чтобы настройки отладки находились в рабочей среде. –