我无法连接到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,但仍然没有.
我有什么想法可以解决这个问题吗?
首先,确保安装了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)
| 归档时间: |
|
| 查看次数: |
11790 次 |
| 最近记录: |