修复 AH02454 权限被拒绝错误后,当 php-fpm 重新启动时 /run/php-fpm/www.sock 的权限被重置为 root

Phi*_*man 5 httpd php-fpm

我正在迁移到新服务器以升级我的内部结构,并且在启动我的 apache 和 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 Code Online (Sandbox Code Playgroud)

/run/php-fpm/www.sock文件确实存在,但它具有 root:root 权限。我的网络服务器在非默认用户下运行apache(用户是sites

经过大量搜索后,我发现这篇文章PHP-FPM - Error 503 - Attempt to connect to Unix domain socket failed并发现该/run/php-fpm/www.sock文件需要被 chowed 给运行 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
Run Code Online (Sandbox Code Playgroud)

我再次 chowned 该www.sock文件,但是当 php-fpm 服务重新启动时,它仍然将www.sock文件的权限恢复为root:root

所以我很困惑,在我的搜索中似乎找不到有关此错误的信息。我知道使用 chown 命令我可以解决这个问题,但是如果我的服务器将来需要重新启动,我怀疑我会记得这样做,除非我添加 @reboot cron 或其他东西,但我不应该必须这样做。我一定是在某个地方丢失了一些配置,我就是找不到它。

我的系统信息:Centos 8 Stream、PHP 7.2.24、Apache 2.4.37

小智 4

在 www.conf 中有以下条目:

listen.owner
listen.group
listen.mode
Run Code Online (Sandbox Code Playgroud)

我的猜测是他们默认不允许任何人,因此网络服务器无法访问 sock 文件。我更改了这三个设置(实际上已启用),并将我的 httpd 用户和组添加为所有者和组,将模式设置为 755(因为 644 不起作用),现在 Web 服务器可以工作并与 php 通信。我不知道这是否是正确的解决方案,或者 acl_users 是否更“正确”......但看来这两种方法都有效。