我无法连接到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,但仍然没有。
我有什么想法可以解决这个问题吗?
答案 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