php5-fpm.sock not found / created in /var/run

Ruben picture Ruben · Nov 20, 2017 · Viewed 18.4k times · Source

I fail to connect to php5-fpm.sock. I have tried many solutions but still getting this error:

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"

My configuration is like this:

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;
        }
}

Is it maybe a problem with permissions over directories? I don't think so. The attempts that I made were:

  • I change the listen of my www.conf, for socket and IP but still not working

    ; Unix user/group of processes ; Note: The user is mandatory. If the group is not set, the default user's group ; will be used. user = www-data group = www-data

    ; The address on which to accept FastCGI requests. ; Valid syntaxes are: ; 'ip.add.re.ss:port' - to listen on a TCP socket to a specific address on ; a specific port; ; 'port' - to listen on a TCP socket to all addresses on a ; specific port; ; '/path/to/unix/socket' - to listen on a unix socket. ; Note: This value is mandatory. listen = /var/run/php5-fpm.sock ;listen = 127.0.0.1:9000

    ; Set listen(2) backlog. ; Default Value: 65535 (-1 on FreeBSD and OpenBSD) ;listen.backlog = 65535

    ; Set permissions for unix socket, if one is used. In Linux, read/write ; permissions must be set in order to allow connections from a web server. Many ; BSD-derived systems allow connections regardless of permissions. ; Default Values: user and group are set as the running user ; mode is set to 0660 listen.owner = www-data listen.group = www-data listen.mode = 0660

  • I have restarted php5-fm and nginx and still nothing.

Any ideas how I can fix that?

Answer

nbari picture nbari · Nov 26, 2017

First, ensure that php-fpm is installed, you could use this to check the current version if any:

php-fpm -v

Second check the php-fpm.conf configuration, and search for this line:

listen = /tmp/php-fpm.socket

In case it doesn't exist just add it, it can be also something like:

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

In some Linux distros normally this is used:

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

In case you want to use a TCP socket:

Listen 127.0.0.1:9000

Restart php-fpm and check that the socket has been created in case of using a Unix domain socket, this can be done by doing this:

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

If socket exists if should print out something like this:

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