手当たり次第に書くんだ

飽きっぽいのは本能

Ubuntu 22.04 Apache PHP 有効化 – libapache2-mod-php の設定と確認

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 -v

PHP モジュールを確認する

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 apache2

PHP 設定ファイルを追加する

サイト共通で使う最小限の 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 apache2

phpenmod で有効化した設定は、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.php

PHP が処理されているか確認する

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 の方が向くことがあります。既存環境の保守では、用途とリスクを見て構成を選びます。

関連する記事
Ubuntu 22.04 Apache PHP 有効化 – libapache2-mod-php の設定と確認

Ubuntu 22.04 Apache PHP 有効化 – libapache2-mod-php の設定と確認」への2件のフィードバック

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

トップへ戻る