39

我正在运行 Wordpress:Nginx + PHP-FPM + APC + W3 Total Cache + PageSpeed。

经过3天的研究和配置,我成功地让它工作了。我将 PHP-FPM 配置为通过 127.0.0.1:9000 运行。但现在我想通过 Socket 进行配置。

问题是我在我的服务器中找不到套接字路径。我刚找到/var/run/php-fpm/php-fpm.pid,但php-fpm.sock不在那里。

运行whereis php-fpm输出是:

php-fpm: /usr/sbin/php-fpm /etc/php-fpm.d /etc/php-fpm.conf /usr/share/man/man8/php-fpm.8.gz

但是那里没有php-fpm.sock

我怎样才能找到php-fpm.sock

我的规格:

  • 亚马逊微型 EC2
  • Linux 版本 3.4.48-45.46.amzn1.x86_64 Red Hat 4.6.3-2(我认为是基于CentOS 5)
  • PHP 5.3.26 (fpm-fcgi)
4

6 回答 6

61

我知道这是老问题,但是由于我刚才也遇到了同样的问题并找到了答案,所以我想我可以分享一下。问题是由于pool.d/目录中的配置。

打开

/etc/php5/fpm/pool.d/www.conf

寻找

listen = 127.0.0.1:9000

改成

listen = /var/run/php5-fpm.sock

之后重新启动 nginx 和 php5-fpm 服务并检查 php5-fpm.sock 是否已经创建。

于 2014-03-15T04:32:59.297 回答
16

7 年后我在 CentOS 上遇到了同样的问题

发布希望它可以帮助其他人......

脚步:

首先,配置 php-fpm 设置:

->systemctl stop php-fpm.service

->cd /etc/php-fpm.d

-> ls -hal(应该看到一个 www.conf 文件)

-> cp www.conf www.conf.backup(备份文件以防万一)

->vi www.conf

-> :/listen =(到达我们需要更改的行)

-> i(进入VI的文本插入模式)

-> 从listen = 127.0.0.1:9000TO更改listen = /var/run/php-fpm/php-fpm.sock

-> Escthen :/listen.owner(找到它)then i(改变)

-> 取消注释listen.owner = nobodyANDlisten.group = nobody

-> 点击Esc然后:/user =输入i

-> 更改user = apacheuser = nginx

-> 并更改group = apachegroup = nginx

->Esc然后点击:wq(保存并退出)

-> systemctl start php-fpm.service (现在您将拥有一个 php-fpm.sock 文件)

第二,您在文件中配置您的server {}块。/etc/nginx/nginx.conf然后运行:systemctl restart nginx.service

最后,在您的 /usr/share/nginx/html 目录中创建一个新的 .php 文件,供您的 Nginx 服务器通过 Internet 浏览器提供服务作为测试。

->vi /usr/share/nginx/html/mytest.php

-> 输入o

-> <?php echo date("Y/m/d-l"); ?>(PHP 页面将在浏览器中打印日期和日期)

-> 命中Esc

-> 类型:wq (保存和相当VI编辑器)

-> 打开浏览器并转到:(http://yourDomainOrIPAddress/mytest.php 您应该看到打印的日期和日期)

于 2016-02-06T18:48:53.157 回答
11

检查配置文件,配置路径是/etc/php5/fpm/pool.d/www.conf,在那里你可以通过配置找到路径,如果你愿意你可以改变它。

编辑
嗯,你是正确的,你需要替换listen = 127.0.0.1:9000listen = /var/run/php5-fpm/php5-fpm.sock,然后你需要运行sudo service php5-fpm restart,并确保它说它重新启动正确,如果没有,那么确保/var/run/有一个名为的文件夹php5-fpm,或者让它听/var/run/php5-fpm.sock因为我不' t认为里面的文件夹/var/run是自动创建的,我记得我必须编辑启动脚本来创建那个文件夹,否则即使你mkdir /var/run/php5-fpm重启后那个文件夹也会消失,服务启动也会失败。

于 2013-07-10T13:39:57.470 回答
7

在我的情况下解决了,我看看

sudo tail -f /var/log/nginx/error.log

错误是 php5-fpm.sock not found

我看着sudo ls -lah /var/run/

没有 php5-fpm.sock

我编辑 www.conf  

sudo vim /etc/php5/fpm/pool.d/www.conf

改变

listen = 127.0.0.1:9000

为了

listen = /var/run/php5-fpm.sock

并重新启动

于 2017-10-10T12:33:43.613 回答
0

当我第一次在 centos7 上运行 LEMP 时遇到这个问题,请参阅这篇文章

我重新启动 nginx 以测试 phpinfo 页面,但得到这个

http://xxx.xxx.xxx.xxx/info.php现在不是无法访问的。

然后我tail -f /var/log/nginx/error.log用来查看更多信息。我发现是 php-fpm.sock 文件不存在。然后我重新启动系统,一切正常。

这里可能不需要像 Fath 的帖子那样重启系统,只需重新加载 nginx 和 php-fpm 即可。

重启 php-fpm

重新加载 nginx 配置

于 2017-05-06T10:06:33.827 回答
0

当你抬头看你的php-fpm.conf

example location:
cat /usr/src/php/sapi/fpm/php-fpm.conf

您将看到,您需要配置 PHP FastCGI 进程管理器以实际使用 Unix 套接字。默认情况下,该listen指令设置为侦听一个端口上的 TCP 套接字。如果没有定义 Unix 套接字,您将找不到 Unix 套接字文件。

; The address on which to accept FastCGI requests.
; Valid syntaxes are:
;   'ip.add.re.ss:port'    - to listen on a TCP socket to a specific IPv4 address on
;                            a specific port;
;   '[ip:6:addr:ess]:port' - to listen on a TCP socket to a specific IPv6 address on
;                            a specific port;
;   'port'                 - to listen on a TCP socket to all IPv4 addresses on a
;                            specific port;
;   '[::]:port'            - to listen on a TCP socket to all addresses
;                            (IPv6 and IPv4-mapped) on a specific port;
;   '/path/to/unix/socket' - to listen on a unix socket.
; Note: This value is mandatory.
listen = 127.0.0.1:9000
于 2016-02-16T15:21:11.940 回答