没有这样的文件或目录:AH02454:FCGI:尝试连接到Unix域套接字/var/run/php/php5.6-fpm.sock (*)失败。

9
我有如下虚拟主机的设置。
 <VirtualHost *:80>
            ServerAdmin webmaster@localhost
            DocumentRoot /var/www/html
    <FilesMatch \.php$>
    SetHandler "proxy:unix:/var/run/php/php5.6-fpm.sock|fcgi://localhost/"
    </FilesMatch>
            ErrorLog ${APACHE_LOG_DIR}/error.log
            CustomLog ${APACHE_LOG_DIR}/access.log combined
    </VirtualHost>

phpinfo() 显示我的网站的 PHP 版本为 5.6。太好了!

现在,我正在尝试使用 Mod_Ruid2 限制权限。我将以下内容添加到我的虚拟主机中:

RDocumentChRoot /var /www/html
<Directory "/www/html/">
        Require all granted
        RMode config
        RUidGid admin0 admin0
</Directory>

尝试访问网站后,我在日志中看到了一个错误。
[Sun Oct 13 16:09:02.492117 2019] [proxy:error] [pid 13571] (2)No such file or directory: AH02454: FCGI: attempt to connect to Unix domain socket /var/run/php/php5.6-fpm.sock (*) failed
[Sun Oct 13 16:09:02.492194 2019] [proxy_fcgi:error] [pid 13571] [client 192.168.0.110:47622] AH01079: failed to make connection to backend: httpd-UDS

告诉我,我做错了什么?
6个回答

9

我在尝试在CentOS 8上运行apache(2.4)+php(7.2)时遇到了同样的问题。

[Thu Jan 09 06:59:10.420499 2020] [proxy:error] [pid 121:tid 139846433412864] (2)No such file or directory: AH02454: FCGI: attempt to connect to Unix domain socket /run/php-fpm/www.sock (*) failed
[Thu Jan 09 06:59:10.420535 2020] [proxy_fcgi:error] [pid 121:tid 139846433412864] [client 127.0.0.1:55580] AH01079: failed to make connection to backend: httpd-UDS

为了解决这个问题,我需要启动一个名为“php-fpm”的服务(sudo systemctl enable --now php-fpm),但这导致另一个错误出现:
[09-Jan-2020 07:07:09] ERROR: unable to bind listening socket for address '/run/php-fpm/www.sock': No such file or directory (2)
[09-Jan-2020 07:07:09] ERROR: FPM initialization failed

这是由于文件夹/run/php-fpm不存在导致的。

mkdir -p /run/php-fpm/

之后,只需重新启动php-fpm,这次没有错误,apache+php就可以愉快地工作了。

请注意,您的错误和我的有一点不同,路径略有不同。您应该创建“/var/run/php/”而不是“/run/php-fpm/”。

希望这可以帮到你。


3

我也遇到了同样的问题,在我的情况下,通过重新启动PHP fpm服务来解决了这个问题,运行以下代码:

sudo service phpx.x-fpm restart

操作系统:CentOS Web服务器:Nginx


1

要在php5.4-fpm下运行php脚本,您必须安装php5.4-fpm。

在Ubuntu 22.04上,可以使用以下命令进行安装:

sudo apt install php5.6 php5.6-fpm -y

1
我曾在CentOS 8和Apache 2.4.37上遇到同样的问题,在互联网上进行了多个小时的研究,但未找到任何关于Unix域代理的解决方案。
我不知道这是一个错误还是文档有误?
要解决此问题,您只需要将proxy:unix:/YOUR_PATH替换为proxy:unix://YOUR_PATH
<FilesMatch \.php$>
  SetHandler "proxy:unix:///var/run/php/php5.6-fpm.sock|fcgi://localhost/"
</FilesMatch>

注意: ...|fcgi://localhost/ 必须存在。
在更改此设置后,出现了新问题: 文件未找到。 这个错误很好,因为我们能够从apache连接到php-fpm
我认为这个问题是一个bug,请参考这个链接。

https://bugs.php.net/bug.php?id=55322

为解决这个问题,您需要实现以下结构:

httpd.conf

<VirtualHost *:80>
  ServerName www.example.com
  DocumentRoot /var/www/example.com/public_html
  #your configs ....
</VirtualHost>

/etc/php-fpm.d/example.com.conf

[example.com]
;your configs...

chroot = /
access.log = /var/www/$pool/logs/phpfpm-access-$pool.log
php_admin_value[open_basedir] = /var/www/$pool/public_html

;your configs...

添加“/”会使下一个路径部分消失:尝试连接到Unix域套接字run/php-fpm/www.sock(*)失败,尝试>>连接到Unix域套接字/php-fpm/www.sock(*)失败。正确的路径是/run... 你之前使用的是/var,在加上“/”后它被移除了,这就是你的路径变成正确的原因。如果我理解情况正确,你已经修复了第一个错误。 - Paul Leclerc

0
请注意,今天我遇到了这个问题,并在serverfault上找到了解决方案,特别是pfrenssen的答案。请注意,字段名称让我困惑了一个小时,因为listen.groupgroup都存在。然后,我需要注释掉一行listen.acl_users,这是默认情况下未注释的。重要的是要注意,我正在使用的www-data用户是我预定义的(非默认)apache用户。我认为这是潜在原因。以下是我的一行代码,用于更改这些值。首先使用cp /etc/php-fpm.d/www.conf /etc/php-fpm.d/www.conf.default来帮助测试,因为sed会直接修改文件。
sed -i  -e 's/user = apache/user = www-data/g' \
        -e 's/group = apache/group = www-data/g' \
        -e 's/;listen.owner = nobody/listen.owner = www-data/g' \
        -e 's/;listen.group = nobody/listen.group = www-data/g' \
        -e 's/;listen.mode = 0660/listen.mode = 0660/g' \
        -e 's/listen.acl_users = apache,nginx/;listen.acl_users = apache,nginx/g' /etc/php-fpm.d/www.conf

0

我刚遇到了同样的问题,在我的Drupal.con文件中把这部分代码注释掉了(你可能需要注释别的部分)。

#<FilesMatch \.php$>
#    SetHandler proxy:unix:/run/php-fpm/www.sock|fcgi://localhost/
#</FilesMatch>

然后网站就出现了。显然,在这个服务器(redhat 7)上我不需要它,但在我的CentOS上同一个项目中我需要它。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接