如何找到我的 php-fpm.sock?

Posted

技术标签:

【中文标题】如何找到我的 php-fpm.sock?【英文标题】:How to find my php-fpm.sock? 【发布时间】:2013-07-08 09:12:44 【问题描述】:

我正在运行 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)

【问题讨论】:

仅供参考,Linux version 3.4.48-45.46.amzn1.x86_64 或类似名称是Amazon Linux。它基于 CentOS,并且与那些软件包兼容,但并不完全相同。 grep '^listen' /etc/php/7.2/fpm/pool.d/www.conf 【参考方案1】:

我知道这是老问题,但由于我刚才也遇到了同样的问题并找到了答案,所以我想我可以分享一下。问题出在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是否已经创建。

【讨论】:

一切都在告诉我要更改为 127.0.0.1:9000 这终于告诉我正确的方法并且文件已创建并且一切正常:) 我没有这样的文件夹/etc/php5/fpm/pool.d/www.conf...我安装了PHP7,不是5 在别处找到了答案!您确实根本不需要更改listen = 127.0.0.1:9000 行!!!!我有 php7,您只需在服务器配置文件中使用 fastcgi_pass 127.0.0.1:9000; @vsync LOL,你确定吗?多年来,我一直处于同样的痛苦之中。每个人都说要更改www.conf,但我找不到..fpm.sock 文件的位置。你确定吗? @entegra - 我不记得了,我上一条评论已经一年多了,抱歉【参考方案2】:

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

发帖希望对别人有帮助...

步骤:

FIRST,配置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:9000 更改为 listen = /var/run/php-fpm/php-fpm.sock

-> Esc 然后:/listen.owner(找到它)然后i(改变)

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

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

-> 将 user = apache 更改为 user = nginx

-> 并将 group = apache 更改为 group = nginx

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

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

第二,您在/etc/nginx/nginx.conf 文件中配置您的server 块。然后运行: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 (您应该会看到打印的日期和日期)

【讨论】:

【参考方案3】:

查看配置文件,配置路径为/etc/php5/fpm/pool.d/www.conf,通过配置可以找到路径,如果需要可以修改。

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

【讨论】:

在我的“www.conf”中配置了“listen = 127.0.0.1:9000”。没有任何 sockt 路径...如果我在该文件中配置“/var/run/php-fpm/php-fpm.sock”,并将此 patsh 放入“nginx.conf”中,我会得到“Bad Gatway”(我认为这是因为“/var/run/php-fpm/php-fpm.sock”不存在) 文件夹/var/run/php-fpm/ 已创建。但该文件夹中唯一的文件是php-fpm.pid。我创建了一个名为 php-fpm.sock 的空文件配置 nginx 和 php-fpm,但没有成功。我认为问题在于我没有.sock 文件。但是我怎样才能得到它呢? 好吧,让我澄清一下,sock文件不是您创建的文件,当服务启动成功时它会创建文件,您是否尝试像我说的那样启动服务?尝试运行sudo service php5-fpm status 它可能会说它没有运行,您是否检查了错误日志以查看它为什么没有启动? 是的...服务已启动。我可以看到 Nginx 使用 'top' 与 PHP-FPM 连接。但问题是即使启动服务也没有创建“.sock”。我正在使用 Amazon Micro (CentOS 5),不知道那里有什么不同 而不是listen = /var/run/php5-fpm/php5-fpm.sock 这个listen = /var/run/php5-fpm.sock 为我解决了这个问题。【参考方案4】:

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

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

然后重启

【讨论】:

【参考方案5】:

当你查找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

【讨论】:

【参考方案6】:

我第一次在centos7 上运行LEMP 时遇到了这个问题,参考这个post

我重启nginx来测试phpinfo页面,但是得到这个

http://xxx.xxx.xxx.xxx/info.php 现在并非不可访问。

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

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

restart php-fpm

reload nginx config

【讨论】:

以上是关于如何找到我的 php-fpm.sock?的主要内容,如果未能解决你的问题,请参考以下文章

php-fpm sock文件权限设置

Nginx+php-fpm 502 504问题

如何通过Linux命令行使用和运行PHP脚本

cron 工作正在 magento 站点工作-但没有找到心跳

composer

try_files