PHPの開発や運用において、php.iniの設定変更や拡張モジュールの追加を行った際、その内容をシステムに反映させるためにはPHPの再起動操作が不可欠です。
しかし、PHPそのものが単独で動作しているのか、あるいはWebサーバーのモジュールとして動作しているのかによって、叩くべきコマンドや手順は大きく異なります。
2026年現在のモダンな開発環境では、PHP-FPM(FastCGI Process Manager)を用いた構成が主流ですが、レガシーなシステムや特定のフレームワーク環境ではApacheのモジュール方式が使われていることもあります。
本記事では、主要なOSや実行環境ごとに、PHPを正しく再起動して設定を確実に反映させるための具体的な手順を整理して解説します。
なぜPHPの再起動が必要なのか
PHPはスクリプト言語であり、コードの変更自体は即座に反映されることが一般的です。
しかし、システム全体の挙動を制御する「設定ファイル(php.ini)」や「拡張モジュールのロード」に関しては、プロセスの起動時にのみ読み込まれるという特性があります。
具体的には、以下のようなケースでPHPプロセスの再起動が必要となります。
memory_limitやpost_max_sizeなどの基本設定を変更したときextension=mbstringのように新しい拡張機能を有効化したとき- OPcacheの設定を変更し、キャッシュを手動でクリアしたいとき
- タイムゾーン(date.timezone)の設定を修正したとき
これらの変更を行った後、再起動を怠ると「設定を書き換えたはずなのにプログラムの挙動が変わらない」といったトラブルの原因になります。
また、環境によっては「Webサーバーの再起動」だけで済む場合と、「PHP-FPMプロセスの再起動」が必要な場合に分かれる点に注意が必要です。
Webサーバー・実行環境別の再起動コマンド
PHPの実行形態(SAPI: Server API)によって、再起動の対象は異なります。
ここでは代表的な3つのパターンについて解説します。
Nginx + PHP-FPM の場合
現在のWeb開発で最も一般的な構成です。
Nginx自体はPHPを実行する能力を持たず、背後で動いている php-fpm というデーモンに処理を委譲しています。
そのため、Nginxを再起動してもPHPの設定は反映されません。必ずPHP-FPM側のサービスを操作する必要があります。
Linux(Ubuntu/Debian系)での標準的なコマンドは以下の通りです。
# PHP 8.4を使用している場合の例
# サービスのステータス確認
sudo systemctl status php8.4-fpm
# 再起動を実行
sudo systemctl restart php8.4-fpm
● php8.4-fpm.service - The PHP 8.4 FastCGI Process Manager
Loaded: loaded (/lib/systemd/system/php8.4-fpm.service; enabled; vendor preset: enabled)
Active: active (running) since Thu 2026-05-07 10:00:00 JST; 1s ago
もし、サービスを停止させずに設定だけを読み込ませたい場合は、restart の代わりに reload を使用することをおすすめします。
これにより、処理中のリクエストを中断することなく新しい設定を適用できます。
Apache (mod_php) の場合
ApacheのモジュールとしてPHPを組み込んでいる場合、PHPはApacheプロセスの一部として動作します。
この構成では、Apacheサーバー自体を再起動することでPHPも同時に再起動されます。
# Ubuntu / Debian系
sudo systemctl restart apache2
# CentOS / RHEL / AlmaLinux系
sudo systemctl restart httpd
Apache経由でPHPを動かしている場合でも、最近の環境では proxy_fcgi を介してPHP-FPMに接続しているケースが増えています。
その場合は、前述の「PHP-FPMの再起動」が必要になるため、自環境がどちらの方式を採用しているか事前に確認しておきましょう。
Dockerコンテナ環境の場合
Dockerを使用してPHP環境を構築している場合、ホストマシン上の systemctl コマンドは効きません。
コンテナそのものを再起動するか、コンテナ内で動作しているプロセスにシグナルを送る必要があります。
# Docker Composeを使用している場合
docker-compose restart php
# 特定のコンテナをID指定で再起動する場合
docker restart [container_id]
コンテナを停止させたくない場合は、docker exec を使用してコンテナ内のPHP-FPMに USR2 シグナルを送ることで、Graceful Restart(優雅な再起動)を実現できます。
# コンテナ内のPHP-FPMプロセスへ再読み込みシグナルを送信
docker exec -it [container_name] kill -USR2 1
OS別の操作手順詳細
サーバーのOSによって、サービスの管理コマンド(Service Manager)が異なります。
主要なOSでの標準的な操作をまとめました。
| OS種類 | 管理ツール | 主なコマンド |
|---|---|---|
| Ubuntu / Debian | systemd | sudo systemctl restart php[version]-fpm |
| CentOS / AlmaLinux | systemd | sudo systemctl restart php-fpm |
| macOS (Homebrew) | brew services | brew services restart php |
| Windows | Services.msc | 「サービス」一覧から対象を選択して再起動 |
macOS環境 (Homebrew)
ローカル開発環境としてmacOSを利用し、HomebrewでPHPをインストールしている場合は、独自のサービス管理コマンドを利用するのが最も簡単です。
# インストールされているPHPのバージョンを確認
php -v
# サービスの再起動
brew services restart php
Windows環境
WindowsでPHPを動かしている場合(IISや手動インストール)、多くは「サービス」として登録されています。
1. 「Windowsキー + R」を押し、services.msc と入力して実行します。
2. 一覧から 「PHP FastCGI Process Manager」 または 「Apache」 を探します。
3. 右クリックして「再起動」を選択します。
WSL2(Windows Subsystem for Linux)を利用している場合は、Linux(Ubuntu等)の手順に従ってください。
設定変更が反映されない時のチェックリスト
PHPを再起動したにもかかわらず、変更した php.ini の設定が反映されないことがあります。
その際は、以下の項目を順番に確認してください。
1. 編集している php.ini のパスが正しいか
PHPには複数の php.ini が存在することがよくあります。
特に「CLI(コマンドライン)用」と「FPM(Webサーバー)用」は別ファイルであることが多いため、注意が必要です。
以下のコマンドをPHPスクリプト、またはコマンドラインで実行して、実際に読み込まれているファイルのパスを確認してください。
<?php
// Webブラウザからアクセスして確認
phpinfo();
?>
コマンドラインで確認する場合は、以下のコマンドを使用します。
php -i | grep "Loaded Configuration File"
Loaded Configuration File => /etc/php/8.4/cli/php.ini
※Webサイトの設定を変えたい場合は、このパスが /etc/php/8.4/fpm/php.ini などになっているか確認してください。
2. 構文エラーがないか確認する
php.ini に記述ミスがある場合、再起動コマンド自体は成功しても、内部的にデフォルト値が使われたり、プロセスの起動に失敗したりすることがあります。
再起動前に以下のコマンドで設定ファイルの構文チェックを行う習慣をつけましょう。
# PHP-FPMの設定テスト
sudo php-fpm -t
[07-May-2026 16:00:00] NOTICE: configuration file /etc/php/8.4/fpm/php-fpm.conf test is successful
3. OPcache が有効になっていないか
PHP 5.5以降標準搭載されている OPcache は、コンパイル済みのバイトコードをメモリにキャッシュして高速化を図る仕組みです。
設定によっては、PHPファイルを書き換えてもメモリ上のキャッシュが優先されることがあります。
これは php.ini の変更とは直接関係ありませんが、「コードの変更が反映されない」という文脈では混同されやすいため、再起動によってキャッシュをフラッシュするか、関数 opcache_reset() を実行することを検討してください。
再起動を伴わない設定反映の方法
本番環境など、わずかなダウンタイムも許容されない状況では、サービス全体の restart ではなく、他の手段を検討することもあります。
1. reload (Graceful Restart) の活用
前述の通り、systemctl reload php-fpm を使用すると、現在処理中のリクエストが終了するのを待ってから新しいプロセスをフォークします。
これにより、ユーザーへのレスポンスを途絶えさせることなく設定を更新できます。
2. .user.ini ファイルの利用
一部のWebサーバー環境(PHP-FPMを使用している場合など)では、ディレクトリごとに .user.ini というファイルを配置することで、特定のディレクトリ配下のみPHP設定を上書きできます。
このファイルは一定時間ごとに自動で再読み込みされるため、PHPの再起動なしで設定を反映させることが可能です。
# .user.ini の例
upload_max_filesize = 20M
post_max_size = 20M
※ただし、すべての項目が変更可能ではないため、公式ドキュメントで PHP_INI_PERDIR または PHP_INI_USER に分類されているか確認が必要です。
まとめ
PHPの再起動は、インフラ管理やアプリケーションのチューニングにおいて避けては通れない操作です。
もっとも重要なポイントは、「自分が利用している環境がどの実行形態(SAPI)なのか」を正しく把握することです。
Nginx環境であれば php-fpm を、Apache環境であれば httpd または apache2 を再起動するという基本を抑えておけば、ほとんどのトラブルを未然に防ぐことができます。
最後に、手順のおさらいです。
phpinfo()やphp -iで読み込まれているphp.iniのパスを確認する。- 設定ファイルを編集し、
php-fpm -tなどで構文チェックを行う。 - 環境に合わせた
systemctlやbrewコマンドで再起動(またはリロード)を実行する。 - 再度設定が反映されているか、実際の挙動を確認する。
これらの手順を確実に行うことで、安全かつ効率的なPHPの開発・運用が可能になります。
2026年の現在、コンテナ化やクラウドネイティブな環境がさらに進化していますが、プロセスを管理するという基本原則は変わりません。
正しい再起動手順をマスターして、安定したシステム稼働を目指しましょう。
