如何重新启动php-fpm?


184

我需要重新加载php.ini,帮助对话框中没有有关重新启动它的任何内容。

Answers:


335

注意如果不是root,加上sudo

  • 直接使用SysV Init脚本:

    /etc/init.d/php-fpm restart    # typical
    /etc/init.d/php5-fpm restart   # debian-style
    /etc/init.d/php7.0-fpm restart # debian-style PHP 7
    
  • 使用服务包装器脚本

    service php-fpm restart    # typical
    service php5-fpm restart   # debian-style
    service php7.0-fpm restart # debian-style PHP 7
    
  • 使用Upstart(例如ubuntu):

    restart php7.0-fpm         # typical (ubuntu is debian-based) PHP 7
    restart php5-fpm           # typical (ubuntu is debian-based)
    restart php-fpm            # uncommon
    
  • 使用systemd(较新的服务器):

    systemctl restart php-fpm.service    # typical
    systemctl restart php5-fpm.service   # uncommon
    systemctl restart php7.0-fpm.service # uncommon PHP 7
    

或系统上的任何等效物。


2
在Mac上呢?php-fpm是使用自制软件安装的。which php-fpm/usr/local/sbin/php-fpm
hobbes3 2013年

6
@ hobbes3试试brew services restart php56(如果您收到关于可用公式的错误,请尝试其他版本,例如php5或php55)。如果未安装Brew服务,则应在首次运行时为您安装它。
Doktor J

上面的方法对我都不起作用,但是确实起作用了:service php-fcgi-mydomain-com restart而且我必须对启用站点的每个域重复此操作
Ilyich

这对我来说是个好人(centOs):systemctl reload php70-php-fpm
4wk_

我使用的是Ubuntu 16.04,它似乎可以正常工作: systemctl restart php5.6-fpm.service
修改

30

对于Mac OS X,这是我的工作:

编写脚本/usr/local/etc/php/fpm-restart

#!/bin/sh

echo "Stopping php-fpm..."
launchctl unload -w ~/Library/LaunchAgents/homebrew-php*.plist

echo "Starting php-fpm..."
launchctl load -w ~/Library/LaunchAgents/homebrew-php*.plist

echo "php-fpm restarted"
exit 0

然后:

chmod ug+x /usr/local/etc/php/fpm-restart
cd /usr/local/sbin
ln -s /usr/local/etc/php/fpm-restart

确保/ usr / local / sbin在$ PATH中

然后从终端fpm-restart和BOOM调用它!


4
homebrew.mxcl.php*.plist如果无法使用,请使用
Daniil Ryzhkov 2015年


brew服务基本上可以完成脚本的工作。
秋朗

22

通常,service php5-fpm restart在最新的发行版中,它将做的很好。

但是有时,它会失败,并告诉您restart: Unknown instance:(或诸如此类)。

现在,如果您不希望重新引导服务器,只需终止进程并重新开始(此处已编辑):

$ sudo pkill php5-fpm; sudo service php5-fpm start

谢谢,这正是我的问题。(stop: Unknown instance:
Nilloc '16

13

这应该工作:

pkill -o -USR2 php-fpm
pkill -o -USR2 php5-fpm

3
如果通过Mac上安装自制软件PHP-FPM,第一个命令的作品比卸载+ load'ing plist中要好很多
艾伦·艾维

OSX:killall php-fpm
ptim

在OSX上,上面给了我一个错误“未知用户SR2”。扭转论点可以解决问题:“ pkill -USR2 -o php-fpm”
Keeth

正是我需要在容器中重新启动FPM所需要的,谢谢!
阿德里安·昆特(

我出于某种原因而不是通过Homebrew使用预先安装的或与xcode捆绑在一起的php版本及其关联的-fpm。只是认为我应该使用已经存在的东西。我使用的组合php-fpm --prefix /usr/local,在需要的目录下创建一些目录,如@Keeth所述pkill -USR2 -o php-fpm,通过进行检查pgrep -l fpm,并且PID确实发生了变化!我没有plist文件或服务可以利用其他答案中提到的优势。
Pysis


12

重新启动php7-fpm时出现问题,因为我不知道该服务的确切命名。这个函数给了我答案:

service --status-all

我的Ubuntu中的php7-fpm服务称为php7.0-fpm,所以我这样做了:

service php7.0-fpm restart


5
+1 forservice --status-all
JD

6

如果向主进程发送USR2信号,则php-fpm将重新启动:

sudo kill -USR2 php-fpm_main_process_id

因此,我们只需要指示php-fpm在某处记录其pid。在此示例中,我假设您要将其保存在/etc/private/php-fpm.pid,并且php-fpm以用户_php的身份运行。首先,将此行添加到配置文件中:

pid = /etc/php-fpm.pid

然后创建文件/etc/php-fpm.pid,并确保php-fpm有权修改它:

$ cd /etc
$ sudo touch php-fpm.pid
$ sudo chown _php php-fpm.pid
$ sudo chmod 644 php-fpm.pid

现在,下次启动php-fpm时,您将能够获取其pid并重新启动它,如下所示:

$ cat /etc/php-fpm.pid
815
$ sudo kill -USR2 815

或者,您可以将它们组合成一个命令:

$ sudo kill -USR2 `cat /etc/private/php-fpm.pid`

我更喜欢@ dialt0ne和@Keeth的pkill ...答案和评论;更短更简单。
Pysis

这是更好的,很好的解释。如果您没有正确匹配进程,则pkill会冒着使其他PHP群集在同一盒子上运行的情况杀死其他PHP群集的风险(是的,这是一种不好的做法)。
Rich K.17年

3

对我来说,我刚刚通过apt升级,但服务重启无法正常进行。我最终需要使用以下命令杀死现有进程:killall php5-fpm


2

要使PHP-FPM重新启动脚本起作用,必须在php-fpm.conf文件中使用指定PID文件。即

pid = /var/run/php-fpm/php-fpm.pid

php-fpm.conf中pid的默认值为no,这意味着不创建PID文件,这意味着重启脚本无法确定重启过程中哪个进程结束。


2

在CentOS 7上

sudo systemctl enable php-fpm // Just incase is disabled. Also ensures it starts automatically with the server

sudo systemctl start php-fpm  // Start the service

sudo systemctl stop php-fpm   // Stop the service

sudo systemctl status php-fpm  // View status

2

在php 5.6 fpm的Ubuntu 16上。

 /etc/init.d/php5.6-fpm restart

1

在RedHat / CentOS 7上,使用来自softwarecollections.org的PHP 7

service rh-php70-php-fpm start
service rh-php70-php-fpm stop
service rh-php70-php-fpm reload
service rh-php70-php-fpm restart
service rh-php70-php-fpm status

或者,如果您使用的是systemctl:

systemctl start rh-php70-php-fpm
systemctl stop rh-php70-php-fpm
systemctl reload rh-php70-php-fpm
systemctl restart rh-php70-php-fpm
systemctl status rh-php70-php-fpm


0

在Windows上:

  1. 在管理控制台中打开服务:

    Start -> Run -> "services.msc" -> OK
    
  2. php-fpm从列表中选择

  3. 右键单击并选择重新启动


0

在带有nginx的Alpine上,这在这里工作:

要杀死所有php-fpm7进程:

kill $(ps -o pid,comm | grep php-fpm7 | awk '{print $1}')

要启动php-fpm7:

php-fpm7


0

要列出CentOS / RHEL 7.x +上的系统服务,请使用

系统控制

列出所有服务:

systemctl列表单元文件

在哪里可以找到名为* php-fpm *的服务,请复制服务名称并运行以下命令

systemctl重新启动ea-php72-php-fpm.service

注意: ea-php72-php-fpm.service用户您的服务名称


-2

MaxOS的另一种方法

打开ActivityMonitor,搜索php-fpm,找到pid。

打开终端,用于kill [pid]停止php-fpm

然后php-fpm在终端上启动它。

如果存在错误信息127.0.0.1:9000已在使用中,则忽略它。

刷新Nginx页面,应该看到php.ini更改生效。


什么是MaxOS?刚运行php-fpm很可能会在错误的用户下运行它。忽略错误消息绝不是一个好主意。
杰拉尔德·施耐德
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.