Обновился до PHP 7, не уходит почта с FormIt
Здравствуйте. Обновился с PHP 5.5 до PHP 7, все чудесно, но я так понял с версии РHP 5.6 произошли изменения по работе с TLS сертификатами. И вот Postfix на VPS — сервере уже не хочет от модекса, да и от Wordpress тоже принимать соединение. Пишет что проблема с CA сертификатами. Перегенерировал самоподписные сертификаты, результат тот же. Может кто боролся с таким? Подскажите.
[2016-04-30 21:40:10] (ERROR @ /var/www/web1/www/core/model/modx/mail/phpmailer/class.smtp.php : 343) PHP warning: stream_socket_enable_crypto(): SSL operation failed with code 1. OpenSSL Error messages:
error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed
[2016-04-30 21:40:10] (ERROR @ /var/www/web1/www/core/components/formit/model/formit/fihooks.class.php : 552) [FormIt] Произошла ошибка при попытке отправить почту. Ошибка соединения с SMTP-сервером https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting
Комментарии: 3
Ну раз никто не ответил. Напишу тогда сам как удалось исправить проблему. Может кому надо будет.
В php.ini на сервере прописываем путь к CA сертификату
В php.ini на сервере прописываем путь к CA сертификату
openssl.cafile = "/etc/ssl/ca-bundle.crt"
openssl.capath = "/etc/ssl"
Далее в настройках почты в панели управления MODx в SMTP-хосты (mail_smtp_hosts) прописываем FQDN имя нашего хоста, такое же как в Common Name при создании SSL сертификата, иначе не заработает. Теперь отправка почты через SMTP с шифрованием TLS средствами PHP работает. Такой вот маленький момент вроде как начиная с PHP 5.6 и дальше.
А где взять сертификат и можно ли использовать сгенерированный Let's Encrypt?
У меня на сервере несколько доменов, можно прописать в конфиге гаждого сайта почтовый сервер mail.site1.ru т.к. ip одинаковый же, и прописать в php.ini сертификат для этого домена, будет ли он работать для всех?
У меня на сервере несколько доменов, можно прописать в конфиге гаждого сайта почтовый сервер mail.site1.ru т.к. ip одинаковый же, и прописать в php.ini сертификат для этого домена, будет ли он работать для всех?
Была такая же ошибка после обновления php5.6 на 5.7 потратил полтора дня на решение пробовал как написано выше не дало результата
в общем решил понизить php на 5.6 и увидел тут ошибку
А решение очень простое
apt-get install --reinstall ca-certificates
update-ca-certificates
после чего не стал понижать php, а решил попробовать и юху… работает отправка)))
Может кому пригодится данное решение вопроса.
в общем решил понизить php на 5.6 и увидел тут ошибку
Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/softwareproperties/ppa.py", line 335, in get_ppa_info
ret = get_ppa_info_from_lp(user, ppa)
File "/usr/lib/python3/dist-packages/softwareproperties/ppa.py", line 92, in get_ppa_info_from_lp
return get_info_from_lp(lp_url)
File "/usr/lib/python3/dist-packages/softwareproperties/ppa.py", line 88, in get_info_from_lp
return _get_https_content_py3(lp_url)
File "/usr/lib/python3/dist-packages/softwareproperties/ppa.py", line 110, in _get_https_content_py3
lp_page = urllib.request.urlopen(request, cafile=LAUNCHPAD_PPA_CERT)
File "/usr/lib/python3.5/urllib/request.py", line 153, in urlopen
capath=capath)
File "/usr/lib/python3.5/ssl.py", line 470, in create_default_context
context.load_verify_locations(cafile, capath, cadata)
FileNotFoundError: [Errno 2] No such file or directory
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/bin/add-apt-repository", line 122, in <module>
shortcut = shortcut_handler(line)
File "/usr/lib/python3/dist-packages/softwareproperties/SoftwareProperties.py", line 864, in shortcut_handler
ret = factory(shortcut)
File "/usr/lib/python3/dist-packages/softwareproperties/ppa.py", line 407, in shortcut_handler
return PPAShortcutHandler(shortcut)
File "/usr/lib/python3/dist-packages/softwareproperties/ppa.py", line 364, in __init__
info = get_ppa_info(self.shortcut)
File "/usr/lib/python3/dist-packages/softwareproperties/ppa.py", line 347, in get_ppa_info
_get_suggested_ppa_message(user, ppa))
File "/usr/lib/python3/dist-packages/softwareproperties/ppa.py", line 304, in _get_suggested_ppa_message
lp_user = get_info_from_lp(LAUNCHPAD_USER_API % user)
File "/usr/lib/python3/dist-packages/softwareproperties/ppa.py", line 88, in get_info_from_lp
return _get_https_content_py3(lp_url)
File "/usr/lib/python3/dist-packages/softwareproperties/ppa.py", line 110, in _get_https_content_py3
lp_page = urllib.request.urlopen(request, cafile=LAUNCHPAD_PPA_CERT)
File "/usr/lib/python3.5/urllib/request.py", line 153, in urlopen
capath=capath)
File "/usr/lib/python3.5/ssl.py", line 470, in create_default_context
context.load_verify_locations(cafile, capath, cadata)
FileNotFoundError: [Errno 2] No such file or directory
А решение очень простое
apt-get install --reinstall ca-certificates
update-ca-certificates
после чего не стал понижать php, а решил попробовать и юху… работает отправка)))
Может кому пригодится данное решение вопроса.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.