你如何重新启动php-fpm?

Gal*_*len 183 php nginx php5 php-fpm

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

tyl*_*erl 335

注意sudo如果不是root,则在前面

  • 直接使用 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
    
    Run Code Online (Sandbox Code Playgroud)
  • 使用服务包装脚本

    service php-fpm restart    # typical
    service php5-fpm restart   # debian-style
    service php7.0-fpm restart # debian-style PHP 7
    
    Run Code Online (Sandbox Code Playgroud)
  • 使用 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
    
    Run Code Online (Sandbox Code Playgroud)
  • 使用 systemd(较新的服务器):

    systemctl restart php-fpm.service    # typical
    systemctl restart php5-fpm.service   # uncommon
    systemctl restart php7.0-fpm.service # uncommon PHP 7
    
    Run Code Online (Sandbox Code Playgroud)

或者您系统上的任何等价物。

  • @hobbes3 尝试`brew services restart php56`(如果您收到关于没有可用公式的错误,请尝试不同的版本,例如 php5 或 php55)。如果您没有安装 brew 服务,它应该在第一次运行时为您安装它。 (6认同)
  • 在 Mac 上呢?php-fpm 是使用自制软件安装的。`which php-fpm` 给出了 `/usr/local/sbin/php-fpm`。 (2认同)

小智 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
Run Code Online (Sandbox Code Playgroud)

然后:

chmod ug+x /usr/local/etc/php/fpm-restart
cd /usr/local/sbin
ln -s /usr/local/etc/php/fpm-restart
Run Code Online (Sandbox Code Playgroud)

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

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

  • 如果不起作用,请使用`homebrew.mxcl.php*.plist` (4认同)

Bur*_*Leo 22

通常,service php5-fpm restart在最新的发行版上会做得很好。

但有时,它会失败,告诉你restart: Unknown instance:(或这样)。

现在,如果您不喜欢重新启动服务器,只需终止进程并重新开始(从此处编辑):

$ sudo pkill php5-fpm; sudo service php5-fpm start
Run Code Online (Sandbox Code Playgroud)


dia*_*0ne 13

这应该有效:

pkill -o -USR2 php-fpm
pkill -o -USR2 php5-fpm
Run Code Online (Sandbox Code Playgroud)

  • 如果你在 Mac 上通过自制软件安装了 PHP-FPM,第一个命令比卸载+加载 plist 好得多 (3认同)

小智 12

对于 Mac OSXbrew services restart php56为我工作。


小智 11

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

service --status-all

我的 Ubuntu 中的 php7-fpm 服务被调用php7.0-fpm,所以我做了:

service php7.0-fpm restart

  • +1 为`service --status-all` (5认同)

小智 6

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

sudo kill -USR2 php-fpm_main_process_id
Run Code Online (Sandbox Code Playgroud)

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

pid = /etc/php-fpm.pid
Run Code Online (Sandbox Code Playgroud)

然后创建文件/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
Run Code Online (Sandbox Code Playgroud)

现在,下次 php-fpm 启动时,您将能够获取它的 pid 并像这样重新启动它:

$ cat /etc/php-fpm.pid
815
$ sudo kill -USR2 815
Run Code Online (Sandbox Code Playgroud)

或者您可以将这些组合成一个命令:

$ sudo kill -USR2 `cat /etc/private/php-fpm.pid`
Run Code Online (Sandbox Code Playgroud)