首页 文章

connect()到unix:/tmp/php-fpm.sock失败(2:没有这样的文件或目录)

提问于
浏览
3

在我的流浪者盒子,分7,我安装了php7.0.3和nginx 1.9.12 . php配置www.conf . 这个文件在/usr/local/php/etc/php-fpm.d/目录下,其配置如下

user = www
group = www
;listen = /tmp/php-fpm.sock
listen = 127.0.0.1:9000
listen.owner = www
listen.group = www

和nginx配置 . / usr / local / nginx / conf / vhost /目录中的文件vm.demo.com.conf . 它的配置是这样的

server {
    listen       80;
    server_name vm.demo.com;
    index index.html index.htm index.php;
    root  /data/wwwroot/demo;

    location / {
        if (-f $request_filename/index.html){
            rewrite (.*) $1/index.html break;
        }
        if (-f $request_filename/index.php){
            rewrite (.*) $1/index.php;
        }
        if (!-f $request_filename){
            rewrite (.*) /index.php;
        }
    }
    location ~ .*\.(php|php5)?$ {
        #fastcgi_pass unix:/tmp/php-fpm.sock;
        fastcgi_pass 127.0.0.1:9000;

        fastcgi_index index.php;
        include fastcgi.conf;
    }
    access_log  logs/demo.log main;
}

在nginx conf中,如果我使用fastcgi_pass 127.0.0.1:9000并且php-fpm.conf监听127.0.0.1:9000,如果我使用套接字配置它们正在正常工作:

php www.conf

user = www
group = www
listen = /tmp/php-fpm.sock
listen.owner = www
listen.group = www

nginx vm.demo.com.conf

location ~ .*\.(php|php5)?$ {
        fastcgi_pass unix:/tmp/php-fpm.sock;
        fastcgi_index index.php;
        include fastcgi.conf;
    }

nginx显示502 Bad gateway . 在nginx error.log中显示这个 .

2016/03/14 21:17:04 [crit] 4208#0: *5 connect() to unix:/tmp/php-fpm.sock failed (2: No such file or directory) while 
connecting to upstream, client: 192.168.1.101, server: vm.demo.com, request: "GET /test.php HTTP/1.1", 
upstream: "fastcgi://unix:/tmp/php-fpm.sock:", host: "vm.demo.com"
2016/03/14 21:17:04 [crit] 4208#0: *5 connect() to unix:/tmp/php-fpm.sock failed (2: No such file or directory) while 
connecting to upstream, client: 192.168.1.101, server: vm.demo.com, request: "GET /test.php HTTP/1.1", 
upstream: "fastcgi://unix:/tmp/php-fpm.sock:", host: "vm.demo.com"
2016/03/14 21:18:01 [crit] 4208#0: *5 connect() to unix:/tmp/php-fpm.sock failed (2: No such file or directory) while 
connecting to upstream, client: 192.168.1.101, server: vm.demo.com, request: "GET /test.php HTTP/1.1", 
upstream: "fastcgi://unix:/tmp/php-fpm.sock:", host: "vm.demo.com"

当我检查/tmp/php-fpm.sock文件时,它已存在

[root@vbox1 vhost]# ll /tmp/php-fpm.sock 
srw-rw---- 1 www www 0 Mar 14 21:06 /tmp/php-fpm.sock

这是php和nginx运行状态:

[root@vbox1 vhost]# systemctl status php-fpm.service
● php-fpm.service - The PHP FastCGI Process Manager
   Loaded: loaded (/etc/systemd/system/php-fpm.service; enabled; vendor preset: disabled)
   Active: active (running) since Mon 2016-03-14 21:06:27 CST; 42min ago
  Process: 4189 ExecStop=/bin/kill -SIGINT $MAINPID (code=exited, status=0/SUCCESS)
 Main PID: 4198 (php-fpm)
   CGroup: /system.slice/php-fpm.service
           ├─4198 php-fpm: master process (/usr/local/php/etc/php-fpm.conf)
           ├─4199 php-fpm: pool www
           └─4200 php-fpm: pool www

Mar 14 21:06:27 vbox1 systemd[1]: Started The PHP FastCGI Process Manager.
Mar 14 21:06:27 vbox1 systemd[1]: Starting The PHP FastCGI Process Manager...
[root@vbox1 vhost]# systemctl status nginx.service
● nginx.service - nginx
   Loaded: loaded (/etc/systemd/system/nginx.service; enabled; vendor preset: disabled)
   Active: active (running) since Mon 2016-03-14 21:06:35 CST; 42min ago
  Process: 4180 ExecStop=/usr/local/nginx/sbin/nginx -s quit (code=exited, status=0/SUCCESS)
  Process: 4206 ExecStart=/usr/local/nginx/sbin/nginx (code=exited, status=0/SUCCESS)
 Main PID: 4207 (nginx)
   CGroup: /system.slice/nginx.service
           ├─4207 nginx: master process /usr/local/nginx/sbin/nginx
           ├─4208 nginx: worker process
           └─4209 nginx: worker process

Mar 14 21:06:35 vbox1 systemd[1]: Starting nginx...
Mar 14 21:06:35 vbox1 systemd[1]: Started nginx.

有人能帮我吗?如果有人遇到同样的问题

5 回答

  • 0

    我遇到了同样的问题 . 我只是将套接字路径更改为另一个目录,但是'/ tmp',然后一切正常 .

  • 1

    我找到了一个继续使用unix套接字的配置(php5),并且不涉及编辑任何其他配置文件(除了nginx默认站点文件) .

    location ~ \.php$ {
    fastcgi_pass unix:/run/php5-fpm.sock;
    fastcgi_index index.php;
    include fastcgi_params;
    # \Add following to use sqlite as db.
    fastcgi_param DB_CONNECTION sqlite;
    

    }

    注意: - unix套接字不在 /run/php/ (虽然它适用于php7) . include fastcgi_params; 是防止php文件下载而不是被解释所必需的 .

    为完整起见,以下是我的整个默认文件 .

    index index.php index.html index.htm;
    
    server {
      listen 80;
      server_name sponk.co.uk;
    
      rewrite_log on;
    
      root /vagrant/public_html;
      try_files $uri $uri/ /index.php$is_args$args;
    
      location ~ \.php$ {
        fastcgi_pass unix:/run/php5-fpm.sock;
        fastcgi_index index.php;
        include fastcgi_params;
      }
    
      location ~ /\.ht {
         deny all;
      }
    
    }
    
  • 7

    您可以尝试将 /usr/local/php/etc/php-fpm.d/www.conf 中的用户更改为nginx并重新启动服务 .

    user = nginx
    group = nginx
    listen = /tmp/php-fpm.sock
    
  • 0

    您需要更改listen.owner和listen.group

    listen.owner = nginx

    listen.group = nginx

    在我的文件中:/etc/php-fpm.d/www.conf

    您的nginx块中的套接字必须相同(如apache中的vhost) . 我还将套接字移到/ var / sockets下

  • 0

    对于在Vagrant中使用Homestead的所有人:

    我解决了简单地使用提供标志重新加载vagrant:从项目根目录:

    cd Homestead
    

    然后:

    vagrant reload --provision
    

    以这种方式重新编译所有配置

相关问题