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

Posted

技术标签:

【中文标题】没有这样的文件或目录:AH02454:FCGI:尝试连接到 Unix 域套接字 /var/run/php/php5.6-fpm.sock (*) failed【英文标题】:No such file or directory: AH02454: FCGI: attempt to connect to Unix domain socket /var/run/php/php5.6-fpm.sock (*) failed 【发布时间】:2020-02-10 09:52:31 【问题描述】:

我有这样的虚拟主机设置

 <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

告诉我,我做错了什么?

【问题讨论】:

【参考方案1】:

我刚刚在 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/”。

希望对你有帮助

【讨论】:

【参考方案2】:

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

sudo service phpx.x-fpm restart

操作系统:centos 网络服务器:nginx

【讨论】:

【参考方案3】:

我在CentOS 8Apache 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/ 必须存在。

更改此设置后会出现新问题:

File not found.

这个错误很好,因为我们能够从apache 连接到php-fpm

我认为这个问题是错误。请看这个链接。

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 域套接字运行/php-fpm/www.sock () 尝试失败 >> 连接到Unix 域套接字 /php-fpm/www.sock () 失败。正确的路径是 /run ... 你之前有 /var,添加 / 删除它,这就是你的路径成为正确路径的原因。如果我了解情况,您已修补了第一个错误。【参考方案4】:

我刚刚遇到了同样的问题,我在我的 drupal.con 中评论了这部分代码(可能是你的另一个)

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

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

【讨论】:

【参考方案5】:

请注意,我今天提出了这个问题,我在 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

【讨论】:

以上是关于没有这样的文件或目录:AH02454:FCGI:尝试连接到 Unix 域套接字 /var/run/php/php5.6-fpm.sock (*) failed的主要内容,如果未能解决你的问题,请参考以下文章

Apache代理fcgi错误

apache 虚拟主机(EAI 2)名称或服务未知:AH00547:无法解析主机名

[转帖]linux下使用 du查看某个文件或目录占用磁盘空间的大小

如何为 django 使用 nginx 虚拟服务器 + fcgi?

clang:错误:没有这样的文件或目录:'dynamic_lookup' clang:错误:没有这样的文件或目录:'suppress'

为啥 ENOENT 的意思是“没有这样的文件或目录”?