PHP-FPMを再起動する方法について

採用はこちら

PHP-FPMを利用しているWebサーバーでは、設定変更を反映したい場合や、PHP-FPMの動作に問題が発生した場合に、サービスの再起動が必要になることがあります。

PHP-FPMの再起動方法自体は難しくありませんが、Ubuntu・Debian系とRHEL・Rocky Linux・AlmaLinux系では、サービス名が異なる場合があるため注意が必要です。

また、本番環境では単純に再起動するだけでなく、事前に設定ファイルをチェックし、再起動後にサービスの状態やログを確認することが重要です。

この記事では、PHP-FPMを再起動する方法から、restartreloadの違い、エラーが発生した場合の確認方法まで詳しく解説します。

目次

PHP-FPMとは

PHP-FPMは「PHP FastCGI Process Manager」の略称で、FastCGIを利用してPHPを実行するための仕組みです。

主にNginxやApacheなどのWebサーバーと組み合わせて利用されます。

Webサーバー自身が直接PHPを実行するのではなく、PHP-FPMがPHPの処理を担当する構成です。

たとえばNginxとPHP-FPMを組み合わせる場合、処理の流れはおおよそ次のようになります。

Webブラウザ
↓
Nginx
↓
PHP-FPM
↓
PHPプログラム

PHP-FPMには、PHPを実行するワーカープロセスを管理する機能があります。

PHP-FPMの主な役割

PHP-FPMには、主に次のような役割があります。

  • PHPワーカープロセスの起動や終了
  • PHPリクエストの処理
  • PHPプロセス数の管理
  • プール単位での設定管理
  • FastCGIによるWebサーバーとの連携
  • PHPプロセスの稼働管理

PHP-FPMの設定を変更した場合には、変更内容を実際のプロセスへ反映させるために、再起動またはリロードが必要になることがあります。

PHP-FPMを再起動する基本的な方法

systemdを採用しているLinuxでは、PHP-FPMの再起動には基本的にsystemctl restartコマンドを使用します。

代表的な形式は次のとおりです。

sudo systemctl restart PHP-FPMのサービス名

ただし、実際のサービス名はLinuxディストリビューションやPHPのインストール方法によって異なります。

UbuntuやDebianの標準的な構成では、PHPのバージョン番号を含んだサービス名が利用されることがあります。

sudo systemctl restart php8.3-fpm

一方、RHEL系Linuxの標準的な構成では、次のようなサービス名が使用されることがあります。

sudo systemctl restart php-fpm

そのため、環境に合ったサービス名を指定することが重要です。

Ubuntu・DebianでPHP-FPMを再起動する方法

UbuntuやDebianでは、標準的なパッケージ構成の場合、PHP-FPMのサービス名にPHPのバージョン番号が含まれることがあります。

たとえばPHP 8.3であれば、サービス名は次のようになります。

php8.3-fpm

PHP 8.3を再起動する

PHP 8.3のPHP-FPMを再起動する場合は、次のコマンドを実行します。

sudo systemctl restart php8.3-fpm

コマンドが正常に終了すれば、PHP-FPMが再起動されています。

PHP 8.4を再起動する

PHP 8.4の場合は、次のようになります。

sudo systemctl restart php8.4-fpm

基本的には、インストールされているPHP-FPMのバージョンに合わせてサービス名を変更します。

PHPのバージョンだけでサービス名を判断しない

PHPのバージョンを確認するときには、次のコマンドがよく利用されます。

php -v

ただし、ここで表示されるのはシェルから実行されるCLI版PHPです。

WebサーバーがPHP-FPM経由で利用しているPHPバージョンとは一致しない場合があります。

たとえば、CLIではPHP 8.4を使用していても、WebサイトではPHP-FPM 8.3を使用している構成も可能です。

そのため、php -vの結果だけを見て再起動するサービスを決めるのは避けたほうが安全です。

RHEL・Rocky Linux・AlmaLinuxでPHP-FPMを再起動する方法

RHEL系Linuxの標準的な構成では、PHP-FPMのサービス名としてphp-fpmが利用されることがあります。

対象には、たとえば次のようなLinuxディストリビューションがあります。

  • Red Hat Enterprise Linux
  • Rocky Linux
  • AlmaLinux
  • CentOS系環境

php-fpmサービスを再起動する

PHP-FPMを再起動するには次のコマンドを使用します。

sudo systemctl restart php-fpm

正常に実行されれば、PHP-FPMサービスが再起動されます。

ただし、外部リポジトリや独自のPHPパッケージを使用している場合には、サービス名が異なることがあります。

そのため、コマンドが見つからない場合は、実際のサービス名を確認しましょう。

PHP-FPMのサービス名を確認する方法

PHP-FPMを再起動しようとしても、サービス名が分からない場合があります。

特に複数のPHPバージョンがインストールされているサーバーでは、確認してから操作したほうが安全です。

起動中のFPMサービスを確認する

次のコマンドを使用すると、現在読み込まれているサービスからFPM関連のものを探せます。

systemctl list-units --type=service | grep -i fpm

たとえば次のように表示される場合があります。

php8.3-fpm.service

この場合、再起動コマンドは次のようになります。

sudo systemctl restart php8.3-fpm

インストール済みのサービスを確認する

停止しているサービスも含めて調べたい場合は、次のような方法があります。

systemctl list-unit-files | grep -i fpm

複数バージョンのPHP-FPMがインストールされている場合には、複数のサービス名が表示されることがあります。

PHP-FPMを再起動したあとに状態を確認する方法

再起動コマンドがエラーを表示しなかったとしても、PHP-FPMが正常に動作しているとは限りません。

本番サーバーでは、再起動後にサービスの状態を確認することをおすすめします。

systemctl statusで確認する

UbuntuでPHP 8.3を利用している場合は、次のように確認します。

sudo systemctl status php8.3-fpm

RHEL系でphp-fpmを利用している場合は、次のようになります。

sudo systemctl status php-fpm

PHP-FPMが正常に稼働していれば、状態欄に次のような表示があります。

Active: active (running)

一方、起動に失敗している場合には、failedなどと表示されることがあります。

その場合は設定ファイルやログを確認する必要があります。

PHP-FPMを起動・停止する方法

PHP-FPMでは、再起動以外にも起動や停止などの操作ができます。

PHP-FPMを起動する

UbuntuでPHP 8.3を利用している場合は次のコマンドです。

sudo systemctl start php8.3-fpm

RHEL系の場合は次のようになります。

sudo systemctl start php-fpm

PHP-FPMを停止する

UbuntuでPHP 8.3を利用している場合は次のとおりです。

sudo systemctl stop php8.3-fpm

RHEL系の場合は次のようになります。

sudo systemctl stop php-fpm

PHP-FPMを停止すると、PHP-FPMを利用しているWebサイトではPHPの処理ができなくなる可能性があります。

本番環境で停止コマンドを使用するときは十分に注意しましょう。

PHP-FPMのrestartとreloadの違い

PHP-FPMの設定を反映するときには、restartだけでなくreloadが利用できる環境もあります。

両者には違いがあるため、意味を理解して使い分けることが重要です。

restartとは

restartはPHP-FPMサービスを再起動する操作です。

UbuntuでPHP 8.3を利用している場合は次のように実行します。

sudo systemctl restart php8.3-fpm

イメージとしては次のような処理です。

PHP-FPMを停止
↓
PHP-FPMを起動

PHP-FPMの動作自体に問題が発生している場合や、確実にサービスを再起動したい場合などに使用できます。

reloadとは

環境によっては、PHP-FPMを完全に停止させずに設定を再読み込みするreload操作が利用できます。

sudo systemctl reload php8.3-fpm

RHEL系では、サービス定義が対応している場合に次のようなコマンドを利用できます。

sudo systemctl reload php-fpm

PHP-FPM自体にはリロード機能が用意されています。

ただし、systemctl reloadが利用できるかどうかや具体的な動作は、利用しているディストリビューションやsystemdのサービス定義によって異なる場合があります。

そのため、環境ごとのサービス設定を確認したうえで利用するのが安全です。

PHP-FPMの設定変更後は構文チェックを行う

PHP-FPMを再起動する前に特に注意したいのが、設定ファイルの記述ミスです。

設定ファイルに誤りがある状態でサービスを再起動すると、PHP-FPMが起動できなくなる可能性があります。

本番サーバーでは、設定ファイルを変更したあとに構文チェックを行うことが重要です。

Ubuntuで設定をチェックする

PHP 8.3の場合、標準的な構成では次のようなコマンドを利用できます。

sudo php-fpm8.3 -t

問題がなければ、設定ファイルの構文に重大なエラーがないことを確認できます。

RHEL系で設定をチェックする

環境によっては次のコマンドを利用できます。

sudo php-fpm -t

PHP-FPMの実行ファイル名はインストール方法によって異なる可能性があるため、利用環境に合わせて確認してください。

PHP-FPMの主な設定ファイル

PHP-FPMでは、PHPそのものの設定とPHP-FPMのプロセス管理設定が別々のファイルに分かれています。

php.ini

php.iniはPHPそのものの動作を設定するファイルです。

代表的な設定には次のようなものがあります。

memory_limit = 512M
upload_max_filesize = 100M

PHP-FPMが読み込むphp.iniを変更した場合は、PHP-FPM側へ設定を反映させる必要があります。

php-fpm.conf

php-fpm.confはPHP-FPM全体に関する設定ファイルです。

Ubuntuの標準的なPHP 8.3構成では、次のような場所に配置されることがあります。

/etc/php/8.3/fpm/php-fpm.conf

ただし、PHPのインストール方法によってパスは異なります。

プール設定ファイル

PHP-FPMでは「プール」という単位でワーカープロセスを管理できます。

Ubuntuの標準的な構成では、デフォルトのプール設定として次のようなファイルがあります。

/etc/php/8.3/fpm/pool.d/www.conf

ここでは、プロセス数やソケット、実行ユーザーなどを設定できます。

CLI版PHPとPHP-FPM版のphp.iniの違い

Ubuntuなどでは、CLI版PHPとPHP-FPM版PHPで異なるphp.iniを利用することがあります。

たとえば次のような構成です。

/etc/php/8.3/cli/php.ini
/etc/php/8.3/fpm/php.ini

Webサイトの設定を変更したいのにCLI側のphp.iniを編集してしまうと、PHP-FPMには設定が反映されません。

そのため、どの設定ファイルが利用されているのかを確認してから編集することが重要です。

複数バージョンのPHP-FPMがある場合の注意点

1台のサーバーに複数のPHPバージョンをインストールしているケースもあります。

たとえば次のような構成です。

php8.2-fpm
php8.3-fpm
php8.4-fpm

この場合、Webサイトごとに異なるPHP-FPMを利用している可能性があります。

NginxからPHP-FPMのバージョンを確認する

Nginxを利用している場合は、fastcgi_passの設定を確認すると、接続先のPHP-FPMを判断できることがあります。

たとえば次の設定です。

fastcgi_pass unix:/run/php/php8.3-fpm.sock;

この設定では、NginxがPHP 8.3のPHP-FPMソケットへ接続しています。

したがって、対象サイトのPHP-FPMを再起動する場合は次のコマンドになります。

sudo systemctl restart php8.3-fpm

CLI版のPHPバージョンだけではなく、Webサーバー側の設定も確認することが大切です。

php.iniを変更した場合はPHP-FPMの再起動が必要?

PHP-FPMが利用しているphp.iniを変更した場合、その変更内容を稼働中のPHP-FPMプロセスへ反映する必要があります。

そのため、PHP-FPMの再起動または利用可能な環境ではリロードを行います。

たとえばPHP 8.3であれば、次のように再起動できます。

sudo systemctl restart php8.3-fpm

ただし、php.iniを変更したからといってNginxやApacheまで必ず再起動する必要があるわけではありません。

PHP側だけの設定変更であれば、PHP-FPM側の設定反映だけで済む場合があります。

PHP-FPMを再起動したらNginxも再起動する必要はある?

PHP-FPMの設定だけを変更した場合は、通常、Nginxを再起動する必要はありません。

PHP-FPM側だけを再起動します。

sudo systemctl restart php8.3-fpm

一方、Nginxの設定ファイルも変更した場合には、Nginx側の設定反映が必要です。

Nginxの設定をチェックする

Nginxの設定を変更した場合は、まず構文チェックを行います。

sudo nginx -t

問題がなければ、次のようにリロードできます。

sudo systemctl reload nginx

このように、変更したサービスに応じてそれぞれ設定を反映することが基本です。

Apacheを利用している場合はどうする?

ApacheとPHP-FPMを組み合わせる構成もあります。

この場合も、PHP-FPM側だけの設定変更であればPHP-FPMを再起動またはリロードします。

たとえばRHEL系では次のようになります。

sudo systemctl restart php-fpm

Apache側の設定も変更した場合には、Apacheにも設定を反映させます。

UbuntuのApacheをリロードする

sudo systemctl reload apache2

RHEL系のApacheをリロードする

sudo systemctl reload httpd

PHP-FPMの設定変更とWebサーバーの設定変更を分けて考えると、不要な再起動を避けやすくなります。

PHP-FPM再起動後に502 Bad Gatewayが出る場合

PHP-FPMを再起動したあとにWebサイトへアクセスすると、502 Bad Gatewayなどのエラーが表示される場合があります。

ただし、502エラーが発生したからといって、必ずPHP-FPMだけが原因とは限りません。

PHP-FPMが起動しているか確認する

まずPHP-FPMの状態を確認します。

sudo systemctl status php8.3-fpm

RHEL系の場合は次のようになります。

sudo systemctl status php-fpm

failedになっていれば、PHP-FPMの起動に失敗しています。

PHP-FPMのログを確認する

systemd環境では、journalctlを利用してサービスのログを確認できます。

UbuntuでPHP 8.3を利用している場合は次のようになります。

sudo journalctl -u php8.3-fpm

直近100件程度を確認したい場合は次のとおりです。

sudo journalctl -u php8.3-fpm -n 100

リアルタイムでログを確認するには-fを付けます。

sudo journalctl -u php8.3-fpm -f

RHEL系の場合は、サービス名をphp-fpmに変更します。

sudo journalctl -u php-fpm -n 100

502エラーで確認したい主な原因

502 Bad Gatewayが表示される場合には、次のような原因が考えられます。

  • PHP-FPMが停止している
  • PHP-FPMの起動に失敗している
  • Nginx側のソケット指定が間違っている
  • PHP-FPM側のソケット設定が異なっている
  • ソケットのアクセス権限に問題がある
  • TCPポートの指定が一致していない
  • PHP-FPMが高負荷で応答できない
  • PHP-FPMの設定ファイルに問題がある

PHP-FPMの状態だけでなく、Webサーバー側の設定やログも確認することが重要です。

PHP-FPMが再起動できない場合の対処方法

PHP-FPMを再起動した際にエラーが表示された場合は、原因を順番に切り分けていきます。

サービス名が正しいか確認する

次のようなエラーが表示された場合があります。

Unit php-fpm.service could not be found

この場合、PHP-FPMが存在しないとは限りません。

サービス名が異なっている可能性があります。

次のコマンドで確認します。

systemctl list-unit-files | grep -i fpm

たとえば、

php8.3-fpm.service

と表示されたのであれば、次のコマンドを使用します。

sudo systemctl restart php8.3-fpm

PHP-FPMの設定ファイルをチェックする

設定を変更した直後に再起動できなくなった場合は、構文エラーを疑います。

sudo php-fpm8.3 -t

エラーが表示された場合は、指摘された設定ファイルを確認します。

journalctlで原因を確認する

PHP-FPMの起動に失敗している場合は、ログから原因を調べます。

sudo journalctl -u php8.3-fpm -n 100

エラー内容を確認し、設定ファイルやパーミッションなどを修正します。

PHP-FPMの代表的な管理コマンド

UbuntuでPHP 8.3を使用する場合の代表的なコマンドは次のとおりです。

起動

sudo systemctl start php8.3-fpm

停止

sudo systemctl stop php8.3-fpm

再起動

sudo systemctl restart php8.3-fpm

リロード

サービス定義が対応している場合は次のように実行できます。

sudo systemctl reload php8.3-fpm

状態確認

sudo systemctl status php8.3-fpm

自動起動を有効にする

sudo systemctl enable php8.3-fpm

自動起動を無効にする

sudo systemctl disable php8.3-fpm

RHEL系の標準的な構成では、php8.3-fpmの部分をphp-fpmに置き換えて使用します。

本番環境でPHP-FPMを安全に再起動する手順

本番環境でPHP-FPMを再起動するときは、単純にrestartを実行するだけではなく、確認手順を含めて作業することが重要です。

1. 対象となるPHP-FPMを確認する

まず、サーバー上で使用されているPHP-FPMサービスを確認します。

systemctl list-units --type=service | grep -i fpm

複数のPHP-FPMが存在する場合は、Webサーバーの設定も確認して対象を特定します。

2. 設定ファイルをチェックする

PHP-FPMの設定を変更した場合は、再起動する前に構文を確認します。

PHP 8.3の一例です。

sudo php-fpm8.3 -t

設定エラーが表示された場合は、再起動する前に修正します。

3. PHP-FPMを再起動する

問題がなければPHP-FPMを再起動します。

sudo systemctl restart php8.3-fpm

4. PHP-FPMの状態を確認する

再起動後は次のコマンドを実行します。

sudo systemctl status php8.3-fpm

active (running)になっているか確認します。

5. Webサイトの表示を確認する

ブラウザからWebサイトへアクセスし、PHPページが正常に表示されるか確認します。

管理画面やフォームなど、PHPを利用する主要な機能も確認すると安心です。

6. 必要に応じてログを確認する

問題がある場合はPHP-FPMのログを確認します。

sudo journalctl -u php8.3-fpm -n 100

NginxやApache側にもエラーが発生している場合は、それぞれのWebサーバーのログも確認します。

PHP-FPMを再起動するときの注意点

PHP-FPMの再起動コマンド自体は簡単ですが、本番サーバーではいくつか注意すべきポイントがあります。

サービス名を決めつけない

PHP-FPMのサービス名はLinuxディストリビューション、PHPバージョン、パッケージの提供元によって異なります。

「Ubuntuなら絶対にphp8.3-fpm」「RHELなら必ずphp-fpm」と決めつけず、実際の環境を確認することが大切です。

php -vだけを確認しない

php -vで分かるのはCLI版PHPのバージョンです。

PHP-FPMのバージョンとは異なる場合があります。

Webサーバーの設定やsystemdのサービス一覧も確認しましょう。

再起動前に設定チェックをする

設定ファイルの編集後にいきなりPHP-FPMを再起動すると、設定ミスによってサービスが起動できなくなる可能性があります。

可能な限り事前に-tオプションなどで設定を検証することが重要です。

再起動後の確認まで行う

systemctl restartが終了しただけで作業を完了しないようにしましょう。

systemctl statusでサービス状態を確認し、実際にWebサイトへアクセスして正常にPHPが実行されているか確認することが大切です。

まとめ

PHP-FPMを再起動する方法は、systemd環境ではsystemctl restartを使用するのが基本です。

UbuntuやDebianの標準的な構成でPHP 8.3を利用している場合は、次のように再起動できます。

sudo systemctl restart php8.3-fpm

RHEL・Rocky Linux・AlmaLinuxなどの標準的な構成では、次のようなコマンドが使用されることがあります。

sudo systemctl restart php-fpm

ただし、PHP-FPMのサービス名はディストリビューションやインストール方法によって異なるため、分からない場合は次のコマンドなどで確認することが重要です。

systemctl list-unit-files | grep -i fpm

また、本番環境ではいきなり再起動するのではなく、次の流れで作業すると安全性を高められます。

対象のPHP-FPMを確認
↓
設定ファイルをチェック
↓
PHP-FPMを再起動またはリロード
↓
サービス状態を確認
↓
Webサイトの動作を確認
↓
問題があればログを確認

特に複数バージョンのPHPがインストールされているサーバーでは、php -vだけで判断せず、Webサーバーが実際にどのPHP-FPMを利用しているか確認することが重要です。

PHP-FPMの再起動そのものは簡単ですが、サービス名、設定ファイル、Webサーバーとの接続先まで正しく確認することで、トラブルを防ぎながら安全に設定を反映できます。

以上、PHP-FPMを再起動する方法についてでした。

最後までお読みいただき、ありがとうございました。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次