Ubuntu 22.04 の Apache で PHP を動かす方法はいくつかあります。小規模な管理画面や検証環境では libapache2-mod-php を使う構成が分かりやすい一方、複数サイトやプロセス分離を重視する場合は PHP-FPM も候補になります。
この記事では、Apache の基本構築が済んでいる前提で、libapache2-mod-php を導入し、PHP 設定、動作確認、検証用ファイルの削除までを扱います。Ubuntu 22.04 の既存環境を保守するための確認記事です。
libapache2-mod-phpを使う前提- PHP と Apache モジュールの導入
- PHP 設定ファイルの追加
- PHP 実行確認とログ確認
- 検証用
phpinfoの削除
書籍
Advanced Ubuntu Administration and Management Best Practices
Ubuntu Server の運用項目を体系的に確認したい場合の参考書籍です。価格や在庫はリンク先で確認してください。
Amazon で見るこのリンクは Amazon アソシエイトリンクです。
mod_php を使う前提
libapache2-mod-php は Apache のプロセス内で PHP を実行します。構成が単純で扱いやすい反面、サイトごとの実行ユーザー分離や細かいリソース制御には向きません。
- 単一サイトや検証用途では導入しやすい
- Apache の MPM は
prefork構成になることが多い - 複数サイトの分離を重視する場合は PHP-FPM を検討する
- phpinfo のような検証ファイルは確認後に削除する
- PHP 設定を変更したら Apache を reload または restart する
PHP をインストールする
Ubuntu 22.04 の標準 PHP は 8.1 系です。Apache モジュール、CLI、共通パッケージを導入します。WordPress などを動かす場合は、後で必要な拡張モジュールを追加します。
sudo apt update
sudo DEBIAN_FRONTEND=noninteractive apt-get install -y php libapache2-mod-php php-cli php-common
php -vPHP モジュールを確認する
Apache に PHP モジュールが読み込まれているか確認します。Ubuntu 22.04 では php8.1 モジュールとして見えることがあります。
apache2ctl -M | grep php || true
ls -l /etc/apache2/mods-enabled/ | grep php || true
ls -l /etc/apache2/mods-available/ | grep php || trueモジュールが有効でない場合は、有効化してから構文確認と reload を行います。
sudo a2enmod php8.1
sudo apache2ctl configtest
sudo systemctl reload apache2PHP 設定ファイルを追加する
サイト共通で使う最小限の PHP 設定を追加します。設定値はアプリケーション要件に合わせて調整します。
sudo tee /etc/php/8.1/mods-available/local-apache.ini >/dev/null <<'EOF'
date.timezone = Asia/Tokyo
upload_max_filesize = 32M
post_max_size = 32M
memory_limit = 256M
EOF
sudo phpenmod local-apache
sudo systemctl reload apache2phpenmod で有効化した設定は、SAPI ごとの conf.d へ反映されます。Apache 用に反映されているか確認します。
php --ini
ls -l /etc/php/8.1/apache2/conf.d/ | grep local-apache || true
grep -R 'date.timezone\|upload_max_filesize\|memory_limit' /etc/php/8.1/apache2/conf.d/動作確認用 PHP を配置する
Apache の DocumentRoot に検証用の PHP ファイルを置きます。確認が終わったら必ず削除します。
sudo tee /var/www/server.example.local/phpinfo.php >/dev/null <<'EOF'
<?php
phpinfo();
EOF
curl -I http://server.example.local/phpinfo.phpPHP が処理されているか確認する
PHP が処理されていれば、phpinfo() の HTML が返ります。PHP コードがそのまま表示される場合は、Apache が PHP を処理していません。
curl http://server.example.local/phpinfo.php | head
apache2ctl -M | grep php
sudo journalctl -u apache2 -n 50 --no-pagerブラウザで確認する場合でも、まず curl で HTTP 応答と本文を見ておくと、名前解決、VirtualHost、PHP 処理を分けて確認できます。
検証ファイルを削除する
phpinfo() は PHP バージョン、拡張モジュール、パス、環境情報を表示します。外部から見える場所に残さないよう、確認後に削除します。
sudo rm /var/www/server.example.local/phpinfo.php
curl -I http://server.example.local/phpinfo.phpログを確認する
PHP のエラーは Apache のエラーログに出ることがあります。VirtualHost ごとにログを分けている場合は、対象サイトのログを確認します。
sudo tail -n 80 /var/log/apache2/server.example.local-error.log
sudo tail -n 80 /var/log/apache2/error.log
sudo journalctl -u apache2 -n 80 --no-pager運用上の注意
phpinfo()を公開場所に残さない- 必要な PHP 拡張だけを追加する
- アップロードサイズやメモリ上限はアプリケーション単位で決める
- 複数サイトや権限分離が必要なら PHP-FPM を検討する
- PHP 更新後は Apache の reload と動作確認を行う
WordPress や phpIPAM などを動かす場合は、PHP 本体だけでなく、MariaDB、必要な PHP 拡張、ファイル権限、TLS、バックアップ方針まで合わせて確認します。
まとめ
Ubuntu 22.04 の Apache で libapache2-mod-php を使うと、少ない手順で PHP を実行できます。導入後は Apache モジュール、PHP 設定、VirtualHost 上での処理、ログを順番に確認します。
mod_php は単純な構成に向いていますが、複数サイトの分離や細かい運用制御には PHP-FPM の方が向くことがあります。既存環境の保守では、用途とリスクを見て構成を選びます。


インストールできました。
ありがとうございます。
ご参考になったようで何よりです!