PHPをWebサーバーで実行する方法には複数の構成があります。中でもよく比較されるのが Apache + mod_php構成 と Nginx/Apache + php-fpm構成 です。
この記事では、それぞれの構造的な違いと仕組みを図解しながら、メリット・デメリットを含めて整理します。
✅ そもそも:PHPはどう動くのか?
PHPは サーバー側で動作するスクリプト言語 で、Webサーバーと連携してリクエストごとにスクリプトを実行し、HTMLなどのレスポンスを生成します。
その実行方式に mod_php(Apache専用) と php-fpm(FastCGI方式) の2種類があります。
✅ 構成①:Apache + mod_php(旧来型)
+---------------------+
| ブラウザ |
+---------------------+
↓
HTTPリクエスト
↓
+---------------------+
| Apache(mod_php) |
| PHPモジュール内蔵 |
+---------------------+
↓
PHPコードを直接実行
↓
+---------------------+
| HTML生成 → ブラウザへ|
+---------------------+
🔍 特徴
- ApacheがPHPモジュール(mod_php)を内蔵
- PHPの処理もApacheプロセスの中で完結
- シンプルで設定も簡単
✅ 構成②:Nginx or Apache + php-fpm(現代型)
+---------------------+
| ブラウザ |
+---------------------+
↓
HTTPリクエスト
↓
+-----------------------+
| Nginx または Apache |
| (FastCGI対応) |
+-----------------------+
↓ FastCGI
+-----------------------+
| php-fpm(別プロセス) |
| PHP実行エンジン |
+-----------------------+
↓
+-----------------------+
| HTML生成 → ブラウザへ |
+-----------------------+
🔍 特徴
- PHPはApache/Nginxとは別プロセス(php-fpm)で実行される
- WebサーバーはPHP処理をFastCGIで外部に委ねる
- より柔軟で高速。スケーラビリティ・セキュリティに優れる
✅ 比較表:mod_php vs php-fpm
項目 | Apache + mod_php | Nginx/Apache + php-fpm |
---|---|---|
Webサーバー | Apacheのみ | Nginx or Apache |
PHP実行 | Apacheプロセス内で実行 | 外部プロセス(php-fpm)で実行 |
プロセス分離 | ❌ なし(混在) | ✅ あり(独立) |
同時接続性能 | △(Apache依存) | ◎(非同期 + プール) |
セキュリティ | △(Apacheと同一権限) | ◎(別ユーザーで動かせる) |
設定の簡単さ | ◎(簡単) | △(構成が分かれる) |
現在の主流 | 廃れつつある | ✅ 主流構成 |
✅ なぜ今は「php-fpm」が主流なのか?
- Nginxはmod_php非対応 → php-fpm必須
- PHPとWebサーバーを分離して管理できる
- プロセスプールによって高負荷時でも安定
- **セキュリティ上の制御(権限の分離)**がしやすい
✅ 開発環境ではどちらを使うべき?
シーン | おすすめ構成 |
---|---|
手軽にローカル検証 |
php -S (組み込みサーバー) |
Apacheでシンプルに動かしたい | mod_php でも可(古い環境向け) |
本番やDocker環境、Nginx使用時 | ✅ php-fpm 一択 |
✅ まとめ
比較項目 | mod_php構成 | php-fpm構成 |
---|---|---|
WebサーバーとPHPの分離 | ❌ 一体型 | ✅ 分離構成 |
高速処理・負荷分散 | △ | ✅ 高性能 |
本番向け | ❌ 現代では非推奨 | ✅ 主流構成 |
Nginx対応 | ❌ 非対応 | ✅ 完全対応 |
🔚 最後に
PHPをWeb上で動かす仕組みには複数の選択肢がありますが、今後の開発・運用では「php-fpm + Nginx or Apache」構成が最も実用的です。
構成の違いを理解すると、環境構築やトラブルシュートがグッと楽になります。
ぜひ自分の開発スタイルに合わせて選んでみてください!