我有一个带有目录结构的简单项目
我正在为我的drupal站点设置nginx配置,并且对于fastcgi_pass
我一直在使用127.0.0.1:9000
但是我想使用这个conf中建议的unix套接字:
# PHP 7 socket location. fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
但我找不到 php/php7.0-fpm.sock;
我的centos发行版中有以下路径
/var/run/php-fpm/php-fpm.pid
BenRoob.. 21
检查将使用以下命令创建套接字的php-fpm配置:
$ cat /etc/php/7.0/fpm/pool.d/www.conf
寻找listen
,例如:
listen = /run/php/php7.0-fpm.sock
php-fpm 在您启动进程后创建套接字文件.
sudo service php7.0-fpm stop sudo service php7.0-fpm start
如果创建了套接字文件,请检查目录:
$ cd /run/php && ls -la
检查将使用以下命令创建套接字的php-fpm配置:
$ cat /etc/php/7.0/fpm/pool.d/www.conf
寻找listen
,例如:
listen = /run/php/php7.0-fpm.sock
php-fpm 在您启动进程后创建套接字文件.
sudo service php7.0-fpm stop sudo service php7.0-fpm start
如果创建了套接字文件,请检查目录:
$ cd /run/php && ls -la
首先检查php-fpm
您的系统是否正在运行,为此,您可以使用pgrep
例如:
# pgrep -fa php-fpm 5666 php-fpm: master process (/etc/php-fpm.conf) 5667 php-fpm: pool www 5668 php-fpm: pool www 5669 php-fpm: pool www 5670 php-fpm: pool www 5671 php-fpm: pool www
在这种情况下,它显示已启动并正在运行并使用配置文件/etc/php-fpm.conf
.在检查配置文件并尝试检查listen =
指令之前,您可以快速查看/proc/net/unix
以下示例:
# grep php /proc/net/unix
这可能会返回以下内容:
ffff8800bfb2f400: 00000002 00000000 00010000 0001 01 28561 /tmp/php-fpm.sock
在这种情况下,它表明php-fpm套接字的路径位于/tmp/php-fpm.sock
一个可以通过检查conf in来验证,/etc/php-fpm.d/www.conf
在这种情况下是:listen= /tmp/php-fpm.sock
如果您没有得到任何结果并且php-fpm
已启动并运行,通过检查配置,您可能会发现通过在TCP套接字上列出使用默认值:
listen = 127.0.0.1:9000
您可以更改为在Unix套接字上侦听的内容,例如您建议的conf:
listen = /var/run/php/php7.0-fpm.sock
在一些Linux发行版中通常使用:
listen.owner = www-data listen.group = www-data listen.mode = 0660
修改配置后,请不要忘记重新启动服务systemctl restart php-fpm
.要检查是否已创建套接字,您可以执行以下操作:
$ file /var/run/php/php7.0-fpm.sock
如果socket存在,如果应该打印出这样的东西:
/var/run/php/php7.0-fpm.sock: socket