はじめに
CakePHP3の勉強をするついでに、環境構築をする際にApache環境でPHPをどのように設定をするのかをまとめてみようと思います。
今まで、特に意識することなくwebに落ちているコマンド叩いて、開発環境を構築できていましたが、何を設定するべきなのか、どのように動いているのかをdockerで環境構築するにあたりまとめようと思います。
構成
- Webサーバ
- Apache2
- 言語
- php
2つのPHP動作パターン
Apacheを動作させる方法は2パターンある
- モジュール版
- Apacheの1つの追加機能としてモジュール版がある
- Webサーバーを動かすユーザー(root権限など)で動作する
- WebサーバーのプロセスのなかでPHPを実行
- CGI版
- CGI(版のPHP)を動かす各ユーザーは、Webサーバー本体を動かすユーザーとは異なる
- Webサーバーとは別のプロセスで実行
セキュリティ的にはCGIで処理速度ではモジュールが良いという話
同一Webサーバに別プロジェクトが存在するなどの場合はCGIを選ぶべきで、そうで無い場合はモジュールを選びましょうということでしょう。
なので、レンタルサーバで開発をする訳ではないので、モジュール版で開発環境を作ります。
モジュール版PHPをインストール
DockerFile
## Packageインストール
RUN apk add --update --no-cache php7 php7-apache2
httpd.confにモジュール記述
httpd.conf
# Get information about the requests being processed by the server
## モジュール版PHP
LoadModule php7_module modules/mod_php7.so
## URLでファイル名を省略した場合の表示しようとする優先順位を設定します。
DirectoryIndex index.php index.html
<FilesMatch \.php$>
SetHandler application/x-httpd-php
</FilesMatch>
# Uncomment the following to allow .phps files to be handled by the php source filter,
# and displayed as syntax-highlighted source code
# <FilesMatch "\.phps$">
# SetHandler application/x-httpd-php-source
# </FilesMatch>
これでPHPをApacheのプロセスの中で実行できるようになります。
※phpをサーバにインストールすることで勝手に記述されたファイルができていた。