Разрешения /run/php-fpm/www.sock сбрасываются до root при перезапуске php-fpm после исправления ошибки отказа в разрешении AH02454

Я перехожу на новый сервер, чтобы обновить свои внутренние компоненты, и я столкнулся с этой ошибкой при установке моего апача и PHP

[Fri Apr 09 16:51:26.243820 2021] [proxy:error] [pid 31179:tid 140021109556992] (13)Permission denied: AH02454: FCGI: attempt to connect to Unix domain socket /run/php-fpm/www.sock (*) failed
[Fri Apr 09 16:51:26.243868 2021] [proxy_fcgi:error] [pid 31179:tid 140021109556992] [client 47.213.222.69:56165] AH01079: failed to make connection to backend: httpd-UDS

Файл /run/php-fpm/www.sockсуществует, но он имеет права root:root. Мой веб-сервер работает под пользователем, который не является пользователем по умолчанию apache (пользователь сайты )

После долгих поисков я нашел эту статью PHP-FPM - Ошибка 503 - Попытка подключиться к сокету домена Unix не удаласьи было обнаружено, что файл /run/php-fpm/www.sockдолжен быть передан тому же пользователю, который запускает httpd. Так что я сделал $chown sites: /run/php-fpm/www.sockи все заработало.

Однако, если служба php-fpm перезапускается, разрешения возвращаются к root:root, и страницы PHP возвращают 503

Поэтому я проверил /etc/php-fpm.d/www.confи обновил строки:

user = sites
group = apache
 .
 .
 .
listen.owner = sites
listen.group = apache

Я снова щелкнул файл www.sock, но при перезапуске службы php-fpm он по-прежнему отменяет права доступа к файлу www.sock. to root:root

Итак, я в тупике, и кажется, что в моих поисках очень мало информации об этой ошибке. И я знаю, что с помощью команды chown я могу решить проблему, однако, если мой сервер когда-нибудь понадобится перезапустить в будущем, я сомневаюсь, что не забуду сделать это, если я не добавлю @reboot cron или что-то еще, но я не должен должен сделать это. Я должен где-то пропустить какую-то конфигурацию, я просто не могу ее найти.

Информация о моей системе: Centos 8 Stream, PHP 7.2.24, Apache 2.4.37

1
задан 9 April 2021 в 20:45
2 ответа

В www.conf есть следующие записи.:

listen.owner
listen.group
listen.mode

Я предполагаю, что по умолчанию они никому не разрешены, поэтому веб-сервер не может получить доступ к файлу sock. Я изменил эти три настройки (на самом деле включен)и добавил пользователя и группу httpd в качестве владельца и группы, установил режим 755 (, потому что 644 не работал), и теперь веб-сервер работает и разговаривает с php. IDK, если это правильное решение или нет, или если acl_users более "правильно"... но похоже, что оба метода работают.

0
ответ дан 22 October 2021 в 21:11

У меня та же проблема, мой файл конфигурации /etc/php-fpm.d/www.conf был таким же, как и ваш.

Я решил проблему, когда увидел, что мой php-fpm.service запущен с правами root.

Я редактирую файл /usr/lib/systemd/system/php-fpm.service и добавляю:

[service]
User=youruser
Group=YourGroup

Также проверяю разрешения для всех путей, которые вы видите в файле:/etc/ php-fpm.conf , например файл журнала.

1
ответ дан 29 November 2021 в 13:50

Теги

Похожие вопросы