前回の記事では、Ubuntu Server 26.04 LTSへApache2をインストールし、ブラウザからWebページを表示できるところまで確認しました。
今回はその続きとして、PHP-FPMを導入し、Apache2からPHPを実行できるように設定します。
このシリーズでは、Apache2のPHP実行方式としてmod_phpではなくPHP-FPMを利用します。PHP処理をApache本体から分離でき、Apache2のmpm_eventと組み合わせやすい構成です。
この記事で行うこと
- PHPとPHP-FPMのインストール
- PHPバージョンの確認
- PHP-FPMサービスの起動確認
- Apache2のMPM確認
proxy_fcgiなど必要なモジュールを有効化- PHP-FPM用Apache設定を有効化
- Apache2の設定構文確認
phpinfo()でPHP実行を確認- 確認後にテストファイルを削除
- PHP-FPMが動かない場合の基本的な切り分け
PHPとPHP-FPMをインストールする
まずパッケージ一覧を更新します。
sudo apt update
続いてPHP本体とPHP-FPM、CLIをインストールします。
sudo apt install php php-fpm php-cli

WordPressを構築する段階では追加のPHP拡張モジュールも必要になりますが、この記事ではまずApache2からPHPを実行できる基本構成を作ります。
PHPのバージョンを確認する
php -v

ここで表示されたPHPのバージョン番号は、実際の26.04環境で確認した値として記事内に残しておくと、後からバージョン差を比較しやすくなります。
PHP-FPMサービスを確認する
PHP-FPMのサービス名にはPHPのバージョン番号が含まれます。まず、インストールされたPHP-FPMのサービス名を確認します。
systemctl list-unit-files | grep fpm

表示されたサービス名を使って状態を確認します。以下のX.Yは、実際にインストールされたPHPのバージョンへ読み替えてください。
systemctl status phpX.Y-fpm

Apache2のMPMを確認する
apache2ctl -M | grep mpm

mpm_event_module が表示されていれば、このシリーズで想定している構成です。
もし mpm_prefork_module が有効になっている場合は、既存構成やmod_phpの利用状況によって対応が変わります。既に運用中のサーバでは、いきなりMPMを切り替えず、現在のPHP構成を確認してから作業してください。
Apache2でPHP-FPM連携に必要なモジュールを有効化する
sudo a2enmod proxy_fcgi setenvif

続いて、利用可能なPHP-FPM用Apache設定を確認します。
ls /etc/apache2/conf-available/ | grep fpm

表示された設定名を使って有効化します。
sudo a2enconf phpX.Y-fpm

Apache2の設定にエラーがないか確認する
sudo apache2ctl configtest

Syntax OK と表示されたら、Apache2を再読み込みします。
sudo systemctl reload apache2
PHP-FPMのソケットを確認する
ls -l /run/php/

phpinfo()でPHPが動くか確認する
Apache2経由でPHPが実際に実行されるか確認するため、テスト用PHPファイルを作成します。
echo '<?php phpinfo(); ?>' | sudo tee /var/www/html/phpinfo.php
別PCのブラウザから、Ubuntu ServerのIPアドレスに続けて /phpinfo.php へアクセスします。
http://192.168.1.100/phpinfo.php

phpinfo.phpは確認が終わったら必ず削除してください。
phpinfo()にはPHPのバージョン、モジュール、パス、環境変数など多くのサーバ情報が表示されます。インターネットへ公開するサーバでは、残したままにしないようにします。
sudo rm /var/www/html/phpinfo.php
PHP-FPMの主要な設定ファイルを確認する
/etc/php/X.Y/fpm/php.ini:PHP-FPMで使用するphp.ini/etc/php/X.Y/fpm/pool.d/:PHP-FPMのプール設定/etc/php/X.Y/fpm/pool.d/www.conf:標準wwwプールの設定/etc/php/X.Y/cli/php.ini:CLI版PHPの設定/run/php/phpX.Y-fpm.sock:PHP-FPMのUnixソケット
Apache2+PHP-FPMが動かない場合の確認ポイント
PHPファイルが表示されない、ダウンロードされてしまう、500エラーになるなどの場合は、順番に状態を確認します。
1. PHP-FPMサービスの状態
systemctl status phpX.Y-fpm
2. Apache2で必要なモジュールが有効か
apache2ctl -M | grep -E 'proxy|setenvif|mpm'

3. PHP-FPM用Apache設定が有効か
ls -l /etc/apache2/conf-enabled/ | grep fpm
4. PHP-FPMソケットが存在するか
ls -l /run/php/
5. Apache2のログを確認
sudo journalctl -u apache2 --no-pager -n 50
sudo tail -n 50 /var/log/apache2/error.log


6. PHP-FPMのログを確認
sudo journalctl -u phpX.Y-fpm --no-pager -n 50

この順番で確認すると、PHP-FPMが起動していないのか、Apache2側の連携設定なのか、ソケットなのか、PHP実行時のエラーなのかを切り分けやすくなります。
この設定、自分の環境でも大丈夫?と迷ったら
Ubuntu・VPS・WordPressの設定や運用について、 「この進め方で合っている?」「この設定を実行して大丈夫?」と迷う場合は、 個別に環境を見ながら整理できます。
1つの相談テーマについて、原則メール2往復まで対応します。
PHP-FPMを再起動・再読み込みする基本コマンド
# PHP-FPM再起動
sudo systemctl restart phpX.Y-fpm
# PHP-FPM状態確認
systemctl status phpX.Y-fpm
# Apache2設定構文確認
sudo apache2ctl configtest
# Apache2再読み込み
sudo systemctl reload apache2
まとめ
今回はUbuntu Server 26.04 LTSへPHP-FPMを導入し、Apache2からPHPを実行できる構成を作りました。
PHP-FPMのサービス、Apache2のmpm_event、proxy_fcgi、PHP-FPM用Apache設定、Unixソケットまで確認しておくと、トラブルが起きたときにも原因を切り分けやすくなります。
次回はMariaDBの導入へ進みます。
Ubuntu Server 26.04 LTSへデータベースサーバを導入し、WordPressを動かすための準備を進めます。