配置Nginx和php-fpm用Sock套接字连接时,找不到php-fpm.sock的原因

Posted 饶翠

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了配置Nginx和php-fpm用Sock套接字连接时,找不到php-fpm.sock的原因相关的知识,希望对你有一定的参考价值。

转载:http://www.cnblogs.com/zzyyxxjc/p/4361282.html

php5.3之后的版本,php-fpm.conf里的listen的默认配置是127.0.0.1:9000,就不会生成php-fpm.sock,因此如果需要nginx里的配置有链接tmp/php-fpm.sock的话,需要将listen的地址配置成和nginx的配置文件一致,同时保证这个路径已经存在,这样在启动./php-fpm的时候,会在对应路径上自动生成php-fpm.sock,例如:

 让PHP-FPM使用Unix套接字

默认情况下监听端口 9000 。 另外,也可以使PHP-FPM使用Unix套接字,这避免了TCP的开销。要做到这一点,打开 /etc/php-fpm.d/www.conf…

vi /etc/php-fpm.d/www.conf

… 修改后如下:

[...]
;listen = 127.0.0.1:9000
listen = /var/run/php-fpm/php5-fpm.sock
[...]

然后重新加载 PHP-FPM:

systemctl restart php-fpm.service

接下来通过你的nginx的配置和所有的虚拟主机和改线 fastcgi_pass 127.0.0.1:9000; to fastcgi_pass unix:/tmp/php5-fpm.sock;,像这样:

vi /etc/nginx/conf.d/default.conf

[...]
    location ~ .php$ {
        root           /usr/share/nginx/html;
        try_files $uri =404;
        fastcgi_pass   unix:/var/run/php-fpm/php5-fpm.sock;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }
[...]

最后重新加载 nginx:

systemctl restart nginx.service 

这样配置好后,就会在/var/run/php-fpm/目录下自动生成一个php5-fpm.sock文件,然后一切OK。

以上是关于配置Nginx和php-fpm用Sock套接字连接时,找不到php-fpm.sock的原因的主要内容,如果未能解决你的问题,请参考以下文章

nginx 和 php-fpm 套接字所有者

nginx和php-fpm配置 错误connect() failed (111: Connection refused) while connecting to upstream connect()

www.sock failed (13: Permission denied)

php-fpm sock文件权限设置

高流量站点NGINX与PHP-fpm配置优化

高流量站点NGINX与PHP-fpm配置优化