2026年8月25日
2026年8月25日
ApacheでPHPを実行する方法(mod_php/PHP-FPM)
はじめに
この記事では、Web開発者やシステム管理者がApacheとPHPを効果的に組み合わせるための基本的な設定方法を紹介します。PHPスクリプトを動かすにはApacheで適切なモジュールを使用する必要があります。ここではmod_phpとPHP-FPMという2つの異なるアプローチについて説明し、それぞれの長所と短所を比較します。
症状・背景
このテーマが必要になる主な場面:
- サイトがPHPスクリプトによって生成されるコンテンツを表示できない
- PHPスクリプトの実行速度や効率性を改善したい
- ApacheとPHP間のセキュリティ設定を強化したい
- 既存のシステムからmod_phpからPHP-FPMへの移行が必要
手順・設定方法
ステップ1: ApacheとPHPのインストール
# PHPのバージョンを確認して適切なパッケージ名を指定します。
sudo apt-get update
sudo apt-get install php7.4 libapache2-mod-php7.4
# インストールが完了したら、mod_phpの状態を確認します。
php -v
ステップ2: mod_phpの設定とテスト
# ApacheがPHPファイルに対して適切に処理するように設定ファイルを編集します。
sudo nano /etc/apache2/mods-available/php7.4.conf
# PHPスクリプトの実行ディレクトリを追加します。
<FilesMatch \\.php$>
SetHandler application/x-httpd-php
</FilesMatch>
# 設定変更が完了したら、Apacheを再起動して新しい設定を適用します。
sudo systemctl restart apache2
# テスト用のPHPスクリプトを作成し、ブラウザからアクセスして動作確認を行います。
echo "<?php phpinfo(); ?>" | sudo tee /var/www/html/php-info.php
ステップ3: PHP-FPMのインストールと設定
# PHP-FPMをインストールします。
sudo apt-get install php7.4-fpm
# ApacheがPHP-FPMを使用するように設定ファイルを編集します。
sudo nano /etc/apache2/sites-available/000-default.conf
# ディレクトリの内容を変更して、PHPスクリプトの実行に必要なFastCGI処理を追加します。
<FilesMatch \\.php$>
SetHandler "proxy:unix:/var/run/php/php7.4-fpm.sock|fcgi://localhost"
</FilesMatch>
# PHP-FPMが正しく動作しているか確認するために、serviceコマンドを使ってステータスをチェックします。
sudo systemctl status php7.4-fpm
ステップ4: ApacheとPHP-FPMのトラブルシューティング
# エラーが発生した場合、Apacheのエラーログファイルを確認して問題の原因を探します。
tail -f /var/log/apache2/error.log
# PHP-FPMのデバッグ情報を有効にして、詳細なログを取得します。
sudo nano /etc/php/7.4/fpm/php-fpm.conf
注意事項
- mod_phpはPHPスクリプトが直接Apache内部で実行されるため、単一のプロセス内で全てのリクエストが処理されます。これによりスケーラビリティに制限がある反面、設定や管理が簡単です。
- PHP-FPMはFastCGIインターフェースを通じて独立したプロセスでPHPを実行します。これはモジュール化の観点からより柔軟性があり、高いパフォーマンスと高い安定性を提供します。
- セキュリティ面では、それぞれの設定に適切なアクセス制御やファイル権限管理を行うことが重要です。
- パフォーマンスの最適化にはキャッシュの活用や冗長性の確保なども検討が必要となります。
まとめ
1. mod_php: PHPスクリプトが直接Apache内で実行されるモジュール。単純で管理が容易。
2. PHP-FPM: FastCGIプロトコルを通じて独立したプロセスでPHPを実行する方式。高いパフォーマンスと柔軟性がある。
3. 設定ファイルの編集: ApacheとPHPの連携には適切な設定ファイルの調整が必須。
4. エラーログの確認: 問題発生時にはまずエラーログを確認し、問題解決に向けた具体的な対策を考える。
5. セキュリティ強化とパフォーマンス向上: 定期的な監視や最適化を通じてシステム全体の安定性と効率性を維持する。
関連記事: