исходящие соединения (curl, сокеты) не работают для apache, но работают как root - PullRequest
0 голосов
/ 19 мая 2018

После недавнего автоматического обновления компонентов linux (CentOS v7 с PLesk 17.8.11) моим веб-приложениям (php) больше не разрешается устанавливать исходящие соединения.Оба «завитка» запросов и PHPMailer терпят неудачу;curl возвращает http-код 0 без содержимого, в то время как PHPMailer сообщает «SMTP Connect () не выполнен».Те же операторы / программы отлично работают при запуске из терминала (пользователь root).Другими словами, если я пишу тривиальную программу, выполняющую "curl http://www.example.com"" и запускаю ее из терминала, она работает; если я вызываю ее из браузера, она не работает. То же самое верно для любой программы, использующей PHPMailerдля отправки почты. SELinux отключен, поэтому он не зависит от httpd_can_network_connect SELinux boolean.

Есть идеи?

Ответы [ 2 ]

0 голосов
/ 19 мая 2018

Я нашел решение, но я не совсем понял, в чем реальная причина.По умолчанию на моем сервере CentOS + Plesk отключен SELinux: я изменил его на «включено» с SELINUX = permissive, затем я изменил два логических значения SELinux:

setsebool -P httpd_can_network_connect on
setsebool -P httpd_can_sendmail on

Даже если SELinux находится в режиме только предупреждения,настройки этих двух логических значений сделали свое дело.

0 голосов
/ 19 мая 2018

Скорее всего, уязвимые домены используют систему PHP, которая была недавно обновлена.Поправьте меня, если я ошибаюсь.

Что объясняет нарушенную функциональность PHP, потому что во время обновления системного пакета PHP перезапуск Apache не запускается Plesk.

Просто перезапустите Apache в Инструменты и настройки> Управление услугами или с помощью systemctl restart httpd.Если после этого проблема не устраняется, попробуйте перейти на любую из версий Plesk PHP.

...