WindowsマシンにWebアプリケーション開発環境を( Apache2.4 + PHP7.1 ) 第2回
WindowsマシンにWebアプリケーションを開発する環境を準備します。ApacheとPHPを使います。
今回はPHPの準備を行います。
PHP
PHP ビルドの選択
PHPをApacheに読み込むには、mod_phpまたはmod_fastcgiが必要となります。今回はmod_phpを使います。
mod_phpを使う場合、PHPはThread-Safe(TS)スレッドセーフのビルドを選択します。
mod_fastcgiを使う場合、PHPはNon-Thread-Safe(NTS)のビルドを選択します。
また、PHPとApacheが同じバージョンのVisual C、同じCPU(x86またはx64)のビルドである必要があります。
インストールしたApacheがVC14 x64で、またmod_phpを使いたいので、「PHP7.1(7.1.0)(2016年12月16日現在最新)」の「VC14 x64 Thread Safe」をダウンロードしました。
PHPインストールと設定
- PHP For Windows: Binaries and sources Releases から適切なバージョンを選択しダウンロードします。
- ダウンロードしたzipファイルを解凍後、展開します。(解凍後のフォルダ名を「php」に変更しました。)
- 展開したフォルダに含まれているphp.ini-productionをphp.iniという名前でコピーします。
- php.iniで下の内容を変更します。
- extension_dir = ./xxxx 拡張モジュールを格納するディレクトリへのパス(絶対パス・相対パス両方可能)
- extension = xxxx.dll 起動時に読み込みたい拡張モジュール
- log_errors = On エラーをログ出力するか(eroor_logディレクティブと組み合わせる)
- error_log = xxxx.logまたはsyslog エラーログファイルへのパス(絶対パス・相対パス両方可能。エラーログファイルはWebサーバが書き込めないといけません。「syslog」と入力するとWindowsのイベントログに記録されます)
変更は任意ですが、合わせて確認しておくとよいディレクティブがあります。
- max_execution_time = ## スクリプト実行の最大時間。デフォルト30秒
- memory_limit = ###M PHPが使用するメモリ量。デフォルト128M
- display_errors = エラーメッセージをWebサーバに返すかどうか
- open_basedir = PHPからのファイル操作を許可するディレクトリのパス
- upload_max_filesize = ###M ファイルのアップロード・POSTするデータの最大サイズ
★open_basedirに設定したディレクトリ以外にphpファイルを配置し、そのファイルにブラウザからアクセスすると、下のエラーメッセージが表示されます。
open_basedir restriction in effect. File(・・・) is not within the allowed path(s):
PHPをApacheハンドラとして設定
Apacheの設定ファイルhttpd.confを変更します。
1. ApacheがPHPモジュールを読み込むように設定します。
この設定により、拡張子.phpを含むすべてのファイルをPHPで処理します。
LoadModule php7_module c:/php/php7apache2_4.dll<php7apache2_4.dllの絶対パス>
AddHandler application/x-httpd-php .php
2.PHPの設定ファイルphp.iniへのパスを設定します。
PHPIniDir c:/php<php.iniを含むディレクトリの絶対パス>
★上記「c:/php」はPHPを展開した環境に合わせて変更してください。
★ファイル名の最後が「.php」の場合だけPHPで処理したい場合は、下の設定を行います。
<FilesMatch /.php$>
SetHandler application/x-httpd-php
</FilesMatch>
★Windows上でApache設定ファイルにパスを入力するとき、バックスラッシュ(\)を前向きスラッシュ(/)に変換する必要があります。
★PHPが公式にサポートしているのは、ApacheLoungeです。
参照
PHPマニュアルより
Windows上でのPHPの手動インストール(http://php.net/manual/ja/install.windows.manual.php)
古いWindowsシステムへのインストール(http://php.net/manual/ja/install.windows.legacy.index.php)