在/ var / run

时间:2017-11-20 10:44:47

标签: php nginx fpm

我无法连接到php5-fpm.sock。我尝试了很多解决方案,但仍然遇到此错误:

2017/11/20 11:17:21 [crit] 9670#9670: *1 connect() to unix:/var/run/php5-fpm.sock failed (2: No such file or directory) while connecting to upstream, client: 192.168.224.8, server: babylon, request: "GET /webmail/ HTTP/1.1", upstream: "fastcgi://unix:/var/run/php5-fpm.sock:", host: "babylon"

我的配置是这样的:

location /webmail {
        alias /srv/roundcubemail;
        index index.php index.html;
        # Favicon
        location ~ ^/webmail/favicon.ico$ {
                root /srv/roundcubemail/skins/classic/images;
                log_not_found off;
                access_log off;
                expires max;
        }
        # Robots file
        location ~ ^/webmail/robots.txt {
                allow all;
                log_not_found off;
                access_log off;
        }
        # Deny Protected directories 
        location ~ ^/webmail/(config|temp|logs)/ {
                 deny all;
        }
        location ~ ^/webmail/(README|INSTALL|LICENSE|CHANGELOG|UPGRADING)$ {
                deny all;
        }
        location ~ ^/webmail/(bin|SQL)/ {
                deny all;
        }
        # Hide .md files
        location ~ ^/webmail/(.+\.md)$ {
                deny all;
        }
        # Hide all dot files
        location ~ ^/webmail/\. {
                deny all;
                access_log off;
                log_not_found off;
        }
        #Roundcube fastcgi config
        location ~ /webmail(/.*\.php)$ {
                error_log /var/log/nginx/x.log error;
                include fastcgi_params;
                fastcgi_pass unix:/var/run/php5-fpm.sock;
                fastcgi_split_path_info ^/webmail/(.+\.php)(/.*)$;
                fastcgi_index index.php;
                #fastcgi_param SCRIPT_FILENAME /srv/roundcubemail/$fastcgi_script_name;
                fastcgi_param SCRIPT_FILENAME /srv/roundcubemail/index.php;
                fastcgi_param PATH_INFO $fastcgi_path_info;
        }
}

对目录的权限可能有问题吗?我不这么认为。 我做的尝试是:

  • 我更改了我的www.conf的监听,用于套接字和IP但仍无法正常工作

    Unix用户/进程组 ;注意:用户是必填项。如果未设置组,则为默认用户的组 ;将会被使用。 user = www-data group = www-data

    接受FastCGI请求的地址。 ;有效的语法是: ; 'ip.add.re.ss:port' - 在TCP套接字上侦听特定地址 ;特定港口; ; 'port' - 在TCP套接字上侦听到a上的所有地址 ;特定港口; ; '/ path / to / unix / socket' - 监听unix套接字。 ;注意:此值是必需的。 listen = /var/run/php5-fpm.sock ; listen = 127.0.0.1:9000

    设置listen(2)积压。 ;默认值:65535(FreeBSD和OpenBSD上为-1) ; listen.backlog = 65535

    设置unix套接字的权限(如果使用)。在Linux中,读/写 ;必须设置权限才能允许来自Web服务器的连接。许多 ;无论权限如何,BSD派生的系统都允许连接。 ;默认值:用户和组设置为正在运行的用户 ; mode设置为0660 listen.owner = www-data listen.group = www-data listen.mode = 0660

  • 我已经重新启动了php5-fm和nginx,但仍然没有。

我有什么想法可以解决这个问题吗?

2 个答案:

答案 0 :(得分:7)

首先,确保安装了php-fpm,您可以使用它来检查当前版本(如果有):

php-fpm -v

再次检查php-fpm.conf配置,并搜索此行:

listen = /tmp/php-fpm.socket

如果它不存在,只需添加它,它也可以是:

listen = /var/run/php5-fpm.sock

在某些Linux发行版中,通常会使用:

listen = /var/run/php5-fpm.sock
listen.owner = www-data
listen.group = www-data
listen.mode = 0660

如果您想使用TCP套接字:

Listen 127.0.0.1:9000

重新启动php-fpm并检查是否已使用Unix domain socket创建套接字,这可以通过以下方式完成:

$ file /var/run/php5-fpm.sock

如果存在socket,如果应该打印出这样的东西:

/var/run/php5-fpm.sock: socket

答案 1 :(得分:-1)

listen.owner = nginx
listen.group = nginx
相关问题