今までPHPとかを触ってこなかったのですが、なんとなく「触ってみるか」という気持ちになったのでWindows10 Homeに環境構築してみた次第です。
色々と間違ってたり足りない部分もあるような気がしますが、Apacheを起動させてPHPファイルの内容も表示できるところまではいったのでその備忘録です。
もっとこうした方がいいなどあればコメントをお願いします。
では、始めます。
1:Visual Studioのインストール
後々にC++コンパイラが必要になるので、先にVisual Studio経由でC++のコンパイラを入れます。
以下のページを開きます。
個人利用なのでCommunityを選択してダウンロードします。
ダウンロードしたインストーラを起動させて指示通りに進めていきます。進めていくと途中で以下のような画面になりますが、コンパイラさえ入ればいいので「C++によるデスクトップ開発」にのみチェックを入れてインストールします。
これでVisual Studio 2019のコンパイラが入ります。
2:phpのインストール
以下のphpのダウンロードページを開きます。
32bit用(x86)や64bit(x64)、その他にもバージョンや「Non Thread Safe」、「Thread Safe」という種類が多くあります。ちなみに「Non Thread Safe」と「Thread Safe」の違いはどうやら以下のような意味だそうです。
- Non Thread Safe:マルチスレッド非対応(Apache1系のみ)
- Thread Safe :マルチスレッド対応(Apache2系も対応)
なので基本的にはThread Safeを選択することになると思います。
今回自分の環境はWindows10の64bitでバージョンは最新のものを入れたいので、以下の赤枠で囲っている「VC15 x64 Thread Safe」のzipファイルをダウンロードします。
ダウンロードしたzipファイルをzipファイルのそのままの名前のフォルダである「php-7.4.8-Win32-vc15-x64」に解凍します。解凍したらフォルダ「php-7.4.8-Win32-vc15-x64」をCドライブ直下に移動させます。
移動させたら「php-7.4.8-Win32-vc15-x64」フォルダ内にある「php.ini-development」ファイルをコピーして「php.ini」に変更します。
作成した「php.ini」ファイルをテキストエディタで開き、以下の部分を変更します。
・755行目あたり変更前
; Directory in which the loadable extensions (modules) reside. ; http://php.net/extension-dir ;extension_dir = "./" ; On windows: ;extension_dir = "ext"
・755行目あたり変更後
; Directory in which the loadable extensions (modules) reside. ; http://php.net/extension-dir extension_dir = "C:\php-7.4.8-Win32-vc15-x64\ext" ; On windows: extension_dir = "C:\php-7.4.8-Win32-vc15-x64\ext"
・838行目あたり変更前
; Temporary directory for HTTP uploaded files (will use system default if not ; specified). ; http://php.net/upload-tmp-dir ;upload_tmp_dir =
・838行目あたり変更後
; Temporary directory for HTTP uploaded files (will use system default if not ; specified). ; http://php.net/upload-tmp-dir upload_tmp_dir = "C:\php-7.4.8-Win32-vc15-x64\tmp"
・955行目あたり変更前
[Date] ; Defines the default timezone used by the date functions ; http://php.net/date.timezone ;date.timezone =
・955行目あたり変更後
[Date] ; Defines the default timezone used by the date functions ; http://php.net/date.timezone date.timezone = Asia/Tokyo
・1317行目あたり変更前
; The path can be defined as: ; ; session.save_path = "N;/path"
・1317行目あたり変更後
; The path can be defined as: ; session.save_path = "C:\php-7.4.8-Win32-vc15-x64\tmp"
これらの部分を変更して保存します。
php.iniの変更が終わったら、phpを使えるように環境変数を設定します。
エクスプローラーの左側にある「PC」を右クリックして「プロパティ」を選択します。
以下のような画面になるので「システム詳細設計」をクリックします。
「環境変数」ボタンをクリックします。
システム環境変数の「Path」を選択した状態で「編集」ボタンをクリックします。
「新規」ボタンをクリックして「C:\php-7.4.8-Win32-vc15-x64」と入力して追加します。追加したら「OK」ボタンをクリックします。
これでphpは使えるようになっているはずなので、コマンドプロンプトやPowerShellを起動させて「php -v」とコマンドを入力します。
$ php -v PHP 7.4.8 (cli) (built: Jul 9 2020 11:30:39) ( ZTS Visual C++ 2017 x64 ) Copyright (c) The PHP Group Zend Engine v3.4.0, Copyright (c) Zend Technologies
エラーが発生せず、PHPのバージョンが表示されていればPHPが使えるようになっています。
3:Apacheのインストール
続いてApacheを入れていきます。
以下のダウンロードページを開きます。
今回自分の環境はWindows10の64bitなので、64bitの方をダウンロードします。
ダウンロードしたzipファイルを解凍した中に「Apache24」というフォルダがあるので、そのフォルダをphpの時と同じようにCドライブ直下に移動させます。
移動させたら「Apache24」フォルダの中にある「conf」フォルダを開きます。「httpd.conf」ファイルをコピーして「httpd_bk.conf」としてバックアップとして元ファイルを残しておき、「httpd.conf」ファイルの方を変更していきます。
「httpd.conf」ファイルをテキストエディタで開いて以下の変更を行います。
・185行目あたり変更前
#LoadModule watchdog_module modules/mod_watchdog.so #LoadModule xml2enc_module modules/mod_xml2enc.so
・185行目あたり変更後(一番下の行を追加)
#LoadModule watchdog_module modules/mod_watchdog.so #LoadModule xml2enc_module modules/mod_xml2enc.so LoadModule php7_module "C:\php-7.4.8-Win32-vc15-x64\php7apache2_4.dll"
・226行目あたり変更前
# If your host doesn't have a registered DNS name, enter its IP address here. # # ServerName www.example.com:80
# If your host doesn't have a registered DNS name, enter its IP address here. # ServerName www.example.com:80
・235行目あたり変更前
<Directory />
AllowOverride none
Require all denied
</Directory>
・235行目あたり変更後
<Directory />
AllowOverride All
Require all granted
</Directory>
・266行目あたり変更前
Options Indexes FollowSymLinks
・266行目あたり変更後
Options Indexes FollowSymLinks ExecCGI Options +Includes
・408行目あたり変更前
#
TypesConfig conf/mime.types
・408行目あたり変更後(下4行を追加)
#
TypesConfig conf/mime.types
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
AddType application/x-httpd-cgi .cgi
AddType application/x-httpd-cgi .pl
・439行目あたり変更前
# To use CGI scripts outside of ScriptAliased directories: # (You will also need to add "ExecCGI" to the "Options" directive.) # #AddHandler cgi-script .cgi # For type maps (negotiated resources): #AddHandler type-map var # # Filters allow you to process content before it is sent to the client. # # To parse .shtml files for server-side includes (SSI): # (You will also need to add "Includes" to the "Options" directive.) # #AddType text/html .shtml #AddOutputFilter INCLUDES .shtml
・439行目あたり変更後
# To use CGI scripts outside of ScriptAliased directories: # (You will also need to add "ExecCGI" to the "Options" directive.) # AddHandler cgi-script .cgi .pl AddHandler php7-script .php # For type maps (negotiated resources): #AddHandler type-map var # # Filters allow you to process content before it is sent to the client. # # To parse .shtml files for server-side includes (SSI): # (You will also need to add "Includes" to the "Options" directive.) # AddType text/html .shtml AddOutputFilter INCLUDES .shtml
・最後の行に追加
PHPIniDir "C:\php-7.4.8-Win32-vc15-x64"
ここまでの変更ができたら上書き保存します。
Apacheの起動は「Apache24」フォルダの中にある「bin」フォルダを開きます。その中にある「httpd.exe」をダブルクリックすることで起動できます。
ダブルクリックすると以下のような黒い画面が立ち上がります。
この状態でブラウザを開いて「http://localhost/」のアドレスにアクセスすると「It works!」という文字だけ書かれたページが表示されます。
Apacheを起動させている黒い画面をウインドウ右上の「×」ボタンで閉じてから、更新したり改めて「http://localhost/」のアドレスにアクセスすると以下のようにページは表示されません。
これで「httpd.exe」でApacheを起動してないとページが表示されていないことがわかったので、Apacheがちゃんと動いていることが確認できました。
4:PHPファイルの実行
PHPとApacheの準備ができたので、今度はブラウザからPHPのファイルが実行できているかを確認します。
「Apache24」フォルダ中にある「htdocs」フォルダを開いて「test.php」の空のテキストファイルを作成します。
test.phpファイルをテキストエディタで開き、以下のように記述して上書き保存します。
・test.pnp
<?php phpinfo() ?>
保存できたら「httpd.exe」でApacheを起動させ、「http://localhost/test.php」のアドレスにアクセスすると、以下のようにPHPの情報が色々と載っているページが表示されます。
これでPHPで記述した部分も動いていることが確認できました。
以上がWindows10にPHPとApacheを入れる方法です。
ApacheもPHPも初心者なので足りない部分や間違っている部分もあるかと思いますが、自分のところではこの方法で環境構築できたのでとりあえずは目的達成です。
ただ2020年という時代に環境構築にここまで手間が必要というのはどうなんだ? という個人的な疑問は浮かびました……。
とはいえ環境はできたので、PHPの勉強も暇なときはやっていきたいかなと思っています。
・参考資料