【问题标题】:No such file or directory: AH02454: FCGI: attempt to connect to Unix domain socket /var/run/php/php5.6-fpm.sock (*) failed没有这样的文件或目录:AH02454:FCGI:尝试连接到 Unix 域套接字 /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

告诉我,我做错了什么?

【问题讨论】:

    标签: php apache fastcgi apache2.4 apache-modules


    【解决方案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
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2018-12-12
            • 2017-02-24
            • 1970-01-01
            • 2019-01-05
            • 2016-06-29
            • 2011-04-27
            • 1970-01-01
            • 2021-12-06
            相关资源
            最近更新 更多