如何找到我的 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 = nobody
和 listen.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?的主要内容,如果未能解决你的问题,请参考以下文章