php-fpmをどのように再起動しますか?


184

php.iniをリロードする必要がありますが、ヘルプダイアログには再起動について何も表示されません。

回答:


335

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はhomebrewを使用してインストールされました。which php-fpm与える/usr/local/sbin/php-fpm
hobbes3

6
@ hobbes3 try brew services restart php56(使用可能な式がないというエラーが表示された場合は、php5やphp55などの別のバージョンを試してください)。brewサービスをインストールしていない場合は、最初の実行時にインストールする必要があります。
ドクター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動作しない場合に使用します
ダニエルリュジコフ

github.com/Homebrew/homebrew-php#installing-multiple-versions は、この.plistファイルが見つからない場合です。
フランク牙

brew servicesは、基本的にスクリプトが行うことを行います。
キューラン

22

通常、service php5-fpm restart最新のディストリビューションでは問題ありません。

しかし、時々、それは失敗し、restart: Unknown instance:(またはそのような)あなたに伝えます。

サーバーを再起動したくない場合は、プロセスを強制終了し、新たに開始してください(ここで編集)。

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

おかげで、これは私の問題を正確に修正しました。(stop: Unknown instance:
ニーロック

13

これは動作するはずです:

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

3
Macでhomebrewを使用してPHP-FPMをインストールした場合、最初のコマンドはplistをアンロード+ロードするよりもはるかにうまく機能します
アランIvey

OSX:killall php-fpm
ptim

OSXでは、上記で「不明なユーザーSR2」というエラーが表示されました。引数を逆にすると修正されました: "pkill -USR2 -o php-
fpm

コンテナ内で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
+1service --status-all
JD

6

メインプロセスにUSR2シグナルを送信すると、php-fpmが再起動します。

sudo kill -USR2 php-fpm_main_process_id

そのため、そのpidをどこかに記録するようにphp-fpmに指示するだけです。この例では、に保存し/etc/private/php-fpm.pid、php-fpmがユーザー_phpとして実行されると仮定します。まず、構成ファイルに次の行を追加します。

pid = /etc/php-fpm.pid

次に、ファイルを作成し、/etc/php-fpm.pidphp-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`

pkill ...上記の@ dialt0neと@Keethの回答とコメントが好きです。短くてシンプル。
-Pysis

これはより良い、そして良い説明です。プロセスが正しく一致しない場合、同じボックスで実行している他のPHPクラスターを強制終了するリスクがあります(これは悪い習慣です)。
リッチ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のデフォルト値は何もありません。これは、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

softwarecollections.orgのPHP 7を使用するRedHat / CentOS 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 +でsystemdサービスを一覧表示するには

systemctl

すべてのサービスをリストするには:

systemctl list-unit-files

* php-fpmという名前のサービスを見つけることができます*サービス名をコピーして、次のコマンドを実行します

systemctl restart 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するだけで、ほとんどの場合、間違ったユーザーで実行されます。エラーメッセージを無視することは決して良い考えではありません。
ジェラルドシュナイダー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.