PHPの設定を変更したあと、「PHPを再起動したい」と考えることがあります。
ただし、厳密にはPHPそのものを単独で再起動するとは限りません。
PHPは利用している環境によって、PHP-FPM、ApacheのPHPモジュール、FastCGI、CLI、Dockerコンテナなど、さまざまな方法で実行されています。
そのため、PHPを再起動するときは、実際にPHPを動かしているサービスやWebサーバーを再起動・再読み込みする必要があります。
代表的な環境には、次のようなものがあります。
- Nginx+PHP-FPM
- Apache+PHP-FPM
- Apache+PHPモジュール
- PHP CLI
- Docker
- XAMPPやWampServer
- macOS+Homebrew
利用環境によって操作方法が異なるため、まずは自分のサーバーでPHPがどのように実行されているのかを確認することが重要です。
PHP-FPMを再起動する方法
PHP-FPMを利用している場合は、PHP-FPMのサービスを再起動します。
Linuxサーバーでは、systemctlを使用する方法が一般的です。
UbuntuなどでPHP-FPMを再起動する
UbuntuなどでPHP-FPMを使用している場合は、次のようなコマンドを実行します。
sudo systemctl restart php8.4-fpm
PHPのバージョンによって、サービス名は異なります。
たとえば、環境によっては次のようになります。
sudo systemctl restart php8.2-fpm
sudo systemctl restart php8.3-fpm
sudo systemctl restart php8.4-fpm
sudo systemctl restart php8.5-fpm
ただし、実際のサービス名はLinuxディストリビューションやPHPのインストール方法によって異なる場合があります。
そのため、PHPのバージョンだけを見てサービス名を決めつけず、実際に稼働しているサービスを確認してから操作するのが安全です。
PHP-FPMの状態を確認する
再起動後は、PHP-FPMが正常に起動しているか確認しましょう。
たとえばPHP 8.4なら、次のようにします。
sudo systemctl status php8.4-fpm
正常に稼働していれば、一般的には次のような表示を確認できます。
active (running)
エラーが表示されている場合は、PHP-FPMの設定ファイルやログを確認する必要があります。
PHP-FPMを停止する
PHP-FPMを停止する場合は、次のコマンドを使用します。
sudo systemctl stop php8.4-fpm
PHP-FPMを起動する
停止しているPHP-FPMを起動する場合は、次のようにします。
sudo systemctl start php8.4-fpm
PHP-FPMをリロードする
設定変更を反映したい場合は、完全な再起動ではなく、リロードを利用できることもあります。
sudo systemctl reload php8.4-fpm
restartはサービスを停止してから起動し直す処理です。
一方、reloadはサービスが対応している場合に、プロセス全体を完全停止させず設定を再読み込みします。
PHP-FPMではgraceful reloadとして動作する構成が一般的ですが、具体的な処理内容はOSやPHPパッケージ、systemdのサービス定義によって異なる場合があります。
本番環境では、サービスへの影響を抑えたい場合にreloadを検討するとよいでしょう。
PHP-FPMのサービス名を確認する方法
どのPHP-FPMを再起動すればよいのか分からない場合は、実際に稼働しているPHP関連サービスを調べます。
systemctlでPHP関連サービスを調べる
次のようなコマンドを使用できます。
systemctl list-units --type=service | grep php
たとえば、
php8.4-fpm.service
と表示された場合は、
sudo systemctl restart php8.4-fpm
と操作できます。
インストールされているサービスを幅広く調べたい場合は、次の方法もあります。
systemctl list-unit-files | grep php
php -vだけでは判断できない場合がある
PHPのバージョンを確認するときには、
php -v
がよく利用されます。
ただし、このコマンドで確認できるのは基本的にCLI版PHPのバージョンです。
たとえば、
PHP 8.3.x
と表示されても、Webサイト側ではPHP 8.4のPHP-FPMが利用されている可能性があります。
そのため、
php -v
の結果だけを見てPHP-FPMのサービス名を判断するのは避けた方が安全です。
Webサイト側で利用しているPHP-FPMのバージョンやサービスを確認してから再起動しましょう。
ApacheでPHPを利用している場合の再起動方法
Apache環境では、PHPの実行方法によって操作対象が変わります。
ApacheのPHPモジュールを利用している場合
ApacheにPHPモジュールを組み込んで動作させている場合は、PHP-FPMではなくApacheを再起動します。
Ubuntuなどでは、次のようにします。
sudo systemctl restart apache2
または、
sudo systemctl restart apache2.service
とします。
Apache自体のコマンドを利用して再起動する方法もあります。
sudo apachectl -k restart
Apacheをgraceful reloadする場合
現在処理している接続への影響をできるだけ抑えながら設定を反映したい場合は、graceful restartを使用できます。
sudo apachectl -k graceful
systemd環境であれば、
sudo systemctl reload apache2
を利用できる場合もあります。
ただし、Apache+PHP-FPM構成の場合は、PHP側の設定変更についてはPHP-FPMを再起動・リロードする必要があります。
NginxでPHPを利用している場合の再起動方法
Nginxでは、PHPをNginx内部で直接実行するのではなく、PHP-FPMと組み合わせる構成が一般的です。
構成を簡単に表すと、次のようになります。
Nginx
↓
PHP-FPM
↓
PHP
PHP側の設定だけを変更した場合
php.iniなどPHP側の設定を変更したのであれば、基本的にはPHP-FPMを再起動・リロードします。
sudo systemctl restart php8.4-fpm
または、
sudo systemctl reload php8.4-fpm
とします。
PHPの設定だけを変更したのであれば、Nginxまで再起動する必要は通常ありません。
Nginxの設定を変更した場合
nginx.confやサイトごとの設定ファイルを変更した場合は、Nginx側の設定を再読み込みします。
まず、設定ファイルに問題がないか確認します。
sudo nginx -t
問題がなければ、次のようにリロードできます。
sudo systemctl reload nginx
必要に応じて再起動する場合は、
sudo systemctl restart nginx
を使用します。
CentOS・Rocky Linux・AlmaLinuxでPHPを再起動する方法
CentOS、Rocky Linux、AlmaLinuxなどのRed Hat系Linuxでは、PHP-FPMのサービス名が、
php-fpm
となっている場合があります。
PHP-FPMを再起動する
sudo systemctl restart php-fpm
PHP-FPMの状態を確認する
sudo systemctl status php-fpm
PHP-FPMを起動する
sudo systemctl start php-fpm
PHP-FPMを停止する
sudo systemctl stop php-fpm
ただし、Remi Repositoryなどを利用して複数バージョンのPHPを導入している場合は、サービス名が異なることがあります。
そのため、実際のPHP-FPMサービス名を確認してから操作しましょう。
macOSでPHPを再起動する方法
macOSでHomebrewを使ってPHPをインストールしている場合は、brew servicesからPHPを管理できます。
Homebrew版PHPを再起動する
通常は次のようにします。
brew services restart php
バージョンを指定してインストールしている場合は、
brew services restart php@8.4
などとします。
Homebrewのサービスを確認する
現在Homebrewで管理されているサービスは、次のコマンドで確認できます。
brew services list
PHPのサービス名が分からない場合にも便利です。
WindowsでPHPを再起動する方法
Windowsでは、PHPの導入方法によって再起動方法が異なります。
特にXAMPP、WampServer、Laragonなどを使用している場合は、それぞれの管理画面からWebサーバーを再起動する方法が一般的です。
XAMPPでPHPを再起動する
XAMPPでApache+PHPを利用している場合は、XAMPP Control PanelからApacheを停止・起動します。
Apache → Stop
Apache → Start
Apacheを再起動することで、PHPの設定も新しく読み込まれます。
IISやFastCGIを利用している場合
Windows ServerでIIS+FastCGIなどを利用している場合は、XAMPPとは操作方法が異なります。
PHPの実行方式を確認したうえで、対象となるWebサーバーやFastCGIプロセスを再起動する必要があります。
Docker環境でPHPを再起動する方法
Dockerコンテナ内でPHPを動かしている場合は、PHPサービスではなくPHPを実行しているコンテナを再起動する方法があります。
PHPコンテナを確認する
まず、現在稼働しているコンテナを確認します。
docker ps
たとえばPHPコンテナの名前が、
php-app
だった場合は、次のように再起動できます。
docker restart php-app
Docker Composeを利用している場合
Docker ComposeでPHPサービス名がphpの場合は、
docker compose restart php
とします。
compose.ymlを変更した場合は注意する
compose.ymlやDockerイメージの構成そのものを変更した場合、単純なrestartでは変更内容が反映されないことがあります。
その場合は、
docker compose up -d
などによってコンテナを再作成する必要があります。
Docker環境では、何を変更したのかによってrestartだけでよいのか、コンテナの再作成が必要なのかを判断しましょう。
php.iniを変更したらPHPの再起動は必要?
PHPを再起動する理由として特に多いのが、php.iniを変更した場合です。
たとえば、
memory_limit = 512M
upload_max_filesize = 100M
post_max_size = 100M
max_execution_time = 300
などを変更するケースがあります。
PHP-FPMでは再読み込みが必要
PHP-FPMは常駐プロセスとして動作しているため、php.iniを変更したあとには、基本的にPHP-FPMを再起動またはリロードして設定を反映させます。
sudo systemctl reload php8.4-fpm
または、
sudo systemctl restart php8.4-fpm
を実行します。
Apacheモジュール版ではApacheを再読み込みする
ApacheのPHPモジュールを使用している場合は、Apache側でPHPの設定が読み込まれるため、Apacheを再起動・再読み込みします。
sudo systemctl restart apache2
CLI版PHPでは通常再起動は不要
コマンドラインから、
php sample.php
のようにPHPを実行している場合は、通常、コマンドを実行するたびにPHPが起動します。
そのため、一般的なCLI利用ではPHPサービスを再起動する必要はありません。
ただし、PHPで長時間稼働するワーカープロセスなどを動かしている場合は、そのプロセス自体の再起動が必要になることがあります。
php.iniの場所を確認する方法
設定を変更したのに反映されない場合は、異なるphp.iniを編集している可能性があります。
CLI版PHPのphp.iniを確認する
次のコマンドを使用できます。
php --ini
または、
php -i | grep "Loaded Configuration File"
とします。
ただし、ここで確認できるのは基本的にCLI版PHPの設定です。
Webサイト側のphp.iniを確認する
Webサイトで利用しているPHPの設定を確認するには、phpinfo()を利用する方法があります。
<?php
phpinfo();
表示されたページの、
Loaded Configuration File
を確認すると、実際に読み込まれているphp.iniを確認できます。
phpinfo()は確認後に削除する
phpinfo()にはPHPのバージョンや設定内容、サーバー情報など、多くの情報が表示されます。
公開サーバーにphpinfo()を設置した場合は、確認後にファイルを削除することをおすすめします。
セキュリティ上、不要なサーバー情報を公開したままにしないことが重要です。
CLI版とPHP-FPM版ではphp.iniが異なる場合がある
Linuxでは、CLI版PHPとPHP-FPMで異なる設定ファイルを使用することがあります。
たとえばUbuntu系では、
/etc/php/8.4/cli/php.ini
と、
/etc/php/8.4/fpm/php.ini
のように分かれている場合があります。
Webサイトの設定を変更したいのに、
/etc/php/8.4/cli/php.ini
だけを編集しても、PHP-FPMで動いているWebサイトには反映されません。
Webサイト側で実際に使用されているPHP設定ファイルを確認することが重要です。
PHPを再起動する前に設定エラーを確認する
本番サーバーでは、設定を変更した直後にいきなりサービスを再起動するのは避けた方が安全です。
設定ファイルに記述ミスがあると、再起動後にサービスが正常に立ち上がらなくなる可能性があるためです。
PHP-FPMの設定を確認する
PHP-FPMでは、環境によって次のようなコマンドで設定テストができます。
php-fpm8.4 -t
環境によっては、
php-fpm -t
となる場合もあります。
PHP-FPMの実行ファイル名は環境ごとに異なるため、利用しているサーバーに合わせて確認してください。
Nginxの設定を確認する
Nginxでは、
sudo nginx -t
を使用します。
問題がなければ、Nginxをリロードできます。
sudo systemctl reload nginx
Apacheの設定を確認する
Apacheでは、
sudo apachectl configtest
を使用できます。
設定に問題がなければ、Apacheを再起動・再読み込みします。
本番環境では、
設定確認
↓
reloadまたはrestart
↓
サービス状態の確認
という流れで作業するのが安全です。
PHPを再起動しても設定が反映されない原因
PHPを再起動したにもかかわらず、設定変更が反映されないことがあります。
その場合は、次のような原因を確認しましょう。
違うPHP-FPMを再起動している
複数バージョンのPHPがインストールされているサーバーでは、Webサイトが使用しているPHPとは別のPHP-FPMを再起動している可能性があります。
たとえばWebサイトがPHP 8.4を利用しているのに、
sudo systemctl restart php8.3-fpm
と実行しても、対象サイトには反映されません。
実際に利用しているPHP-FPMのサービスを確認しましょう。
違うphp.iniを編集している
CLI版とFPM版のphp.iniが分かれている場合、CLI用の設定ファイルを編集してもWebサイトには反映されません。
たとえば、
/etc/php/8.4/cli/php.ini
ではなく、
/etc/php/8.4/fpm/php.ini
を編集する必要があるケースがあります。
OPcacheの影響を受けている
PHPでは、処理速度を向上させるためにOPcacheが利用されていることがあります。
PHP-FPMを再起動すると、通常はそのPHP-FPMインスタンスが使用しているOPcacheも再初期化されます。
そのため、PHPコードの変更が反映されない場合にPHP-FPMの再起動で解決するケースがあります。
ただし、キャッシュ構成によって状況は異なるため、OPcache以外のキャッシュも利用している場合は、それぞれ確認する必要があります。
Webサーバー側の設定を変更している
PHP-FPMを再起動しても、NginxやApacheの設定変更は自動的には反映されません。
たとえば、
nginx.conf
やApacheのVirtualHost設定などを変更した場合は、Webサーバー側も再読み込みする必要があります。
restartとreloadの違い
PHP-FPMなどのサービスを操作するときは、restartとreloadの違いを理解しておくことが重要です。
restartとは
restartは、サービスのプロセスを停止してから起動し直す処理です。
たとえば、
sudo systemctl restart php8.4-fpm
とします。
設定変更を確実に反映したい場合や、プロセスを完全に起動し直したい場合に利用されます。
reloadとは
reloadは、そのサービスが対応している場合に、プロセス全体を完全停止させず設定を再読み込みする処理です。
sudo systemctl reload php8.4-fpm
などとします。
PHP-FPMではgraceful reloadとして動作する構成が一般的です。
ただし、systemctl reloadが具体的にどのような処理を行うかは、OSやディストリビューション、PHPパッケージのsystemd設定などによって異なる場合があります。
そのため、すべての環境でまったく同じ動作をするとは限りません。
PHP-FPMのgraceful reloadについて
PHP-FPMでは、稼働中のサービスへの影響を抑えながらプロセスを再読み込みする仕組みがあります。
一般的なPHP-FPMでは、SIGUSR2がgraceful reloadに使用されます。
一方、どのシグナルがsystemctl reloadから利用されるかなどは、Linuxディストリビューションやパッケージ側の設定によって異なる場合があります。
そのため、PHP-FPMの再読み込みについては、
sudo systemctl reload php8.4-fpm
のように、利用しているOSで提供されているサービス管理コマンドを使用するのが分かりやすい方法です。
PHPを安全に再起動する手順
本番環境でPHPを再起動する場合は、いきなりrestartを実行するのではなく、順番に確認すると安全です。
1.PHP関連サービスを確認する
systemctl list-units --type=service | grep php
たとえば、
php8.4-fpm.service
が確認できたとします。
2.設定ファイルを確認する
PHP-FPMの設定テストが可能な環境なら、
sudo php-fpm8.4 -t
などを実行します。
3.PHP-FPMを再読み込みする
設定に問題がなければ、
sudo systemctl reload php8.4-fpm
を実行します。
完全な再起動が必要な場合は、
sudo systemctl restart php8.4-fpm
とします。
4.サービスの状態を確認する
最後に、
sudo systemctl status php8.4-fpm
を実行し、PHP-FPMが正常に稼働していることを確認します。
PHPの再起動方法まとめ
PHPの再起動方法は、すべての環境で共通しているわけではありません。
PHP-FPMを利用している場合は、
sudo systemctl restart php8.4-fpm
のようにPHP-FPMを再起動します。
ApacheのPHPモジュールを利用している場合は、
sudo systemctl restart apache2
のようにApacheを再起動します。
Red Hat系Linuxでは、
sudo systemctl restart php-fpm
となる場合があります。
macOS+Homebrewなら、
brew services restart php
を利用できます。
Dockerであれば、
docker compose restart php
など、PHPを実行しているコンテナを再起動します。
重要なのは、「PHPを再起動するための共通コマンドが1つ存在するわけではない」という点です。
まずPHPがPHP-FPM、Apacheモジュール、Dockerなどのどの方式で動いているのかを確認し、その環境に適したサービスを再起動・再読み込みする必要があります。
また、本番サーバーでは設定変更後にすぐ再起動するのではなく、設定ファイルにエラーがないことを確認してからreloadまたはrestartを実行し、最後にサービスの稼働状態を確認するのが安全です。
以上、PHPの再起動方法についてでした。
最後までお読みいただき、ありがとうございました。










