在/ var/run中找不到/创建php5-fpm.sock

Rub*_*ben 3 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"
Run Code Online (Sandbox Code Playgroud)

我的配置是这样的:

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;
        }
}
Run Code Online (Sandbox Code Playgroud)

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

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

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

    ; 接受FastCGI请求的地址.; 有效的语法是:; 'ip.add.re.ss:port' - 在TCP套接字上侦听特定地址; 特定港口; ; 'port' - 监听TCP套接字上的所有地址; 特定港口; ; '/ 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,但仍然没有.

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

nba*_*ari 8

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

php-fpm -v
Run Code Online (Sandbox Code Playgroud)

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

listen = /tmp/php-fpm.socket
Run Code Online (Sandbox Code Playgroud)

如果它不存在只是添加它,它也可以是这样的:

listen = /var/run/php5-fpm.sock
Run Code Online (Sandbox Code Playgroud)

在一些Linux发行版中通常使用:

listen = /var/run/php5-fpm.sock
listen.owner = www-data
listen.group = www-data
listen.mode = 0660
Run Code Online (Sandbox Code Playgroud)

如果您想使用TCP套接字:

Listen 127.0.0.1:9000
Run Code Online (Sandbox Code Playgroud)

php-fpm在使用Unix域套接字的情况下重新启动并检查是否已创建套接字,这可以通过执行以下操作来完成:

$ file /var/run/php5-fpm.sock
Run Code Online (Sandbox Code Playgroud)

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

/var/run/php5-fpm.sock: socket
Run Code Online (Sandbox Code Playgroud)