#はじめに
PHPのローカル環境が必要になり環境構築をしようとしましたが、PCに必要なものがいろいろ入っておらず**「全然動かないんだけど!」**と深みにはまりかなり苦しむことになってしまいました(初心者が環境構築に苦しむってこういうことなんだなって・・・)
PHPだけを導入するとlocalhostでHTMLが表示されるので一見動いているように見えるのですが、実際はデータベースを使った操作や基本的な機能が使えないので他にも設定する必要があります。
PHPの環境構築の記事はある程度必要なアプリケーションが入っている前提で書かれているものが多く大変だったため、備忘録を兼ねて同じように初心者が苦しまないよう投稿することにしました。
#目的
Windows10にPHPを導入してPHPを動かせるように。
初心者が買ったばかりのPCにPHPの環境を構築できることを目標にしているので、いろいろな記事を探さなくても良いように初歩的な部分も省略せず説明して行こうと思います。
本来アプリケーション1つごとに記事が書かれていることが多いですがこの記事だけで導入できることを目指しているため長くなってしまいました、ご了承ください。
#概要
###・PHPを動かすために必要なもの(記事更新時の最新版)
1 VisualStudio(2017)
2 (Visual Studio 2017 の Visual C++ 再頒布可能パッケージ)
3 PHP(-7.3.0)
4 Apache(2.4.37 VC15)
PHPを動作させるにはVisual C++というものが、PHPをサーバー上で動かすにはApache必要になります。
またVisual C++を使うため、また後々必要になるMySQLを動作させるためにVisualStudio2017も必須のためこちらもダウンロードしてください。
※注1)XAMPPというパッケージを使ってインストールしよう、またはXAMPPを使ってインストールしたけど動かず困っている方は(1)のVisualStudioのインストールをしてみてください。
※注2)VisualStudio2017ではなく2015をダウンロードもしくはあらかじめ入っている方はそちらの再頒布用パッケージをダウンロードしてください。またVisualStudio2019がリリース予定と公式ページに書いてありますので今後そちらをダウンロードされた方には2019版の再頒布用パッケージがないか確認してみてください。
※注3)2のVisual C++ 再頒布用パッケージはVisualStudioをダウンロードする際に設定をきちんとすれば必要のない可能性があります。この記事には恐らく必要のないであろう設定のやり方を書いておきましたが、私はいろいろな方法を手当たり次第に試してしまったため判別がつきませんでした、もしわかる方がいらっしゃれば教えていただけるとありがたいです。
###・自分のPCのbit数の確認
今回ダウンロードするものには32bit版と64bit版が存在するものがあります。私のPCは64bitだったので64bit版をダウンロードしています。お持ちのPCに合わせたバージョンをダウンロードしてください。
▼確認の仕方ですが、まずWindowsメニューから設定を開き、システムを開きます。
▼そうするとシステム関連の項目が出てきます、そこで左側のメニューバーに<バージョン情報>という項目があるので開いて、そこからシステムの種類を参照し自分のbit数を確認してください。
#1. 必要なファイルのダウンロード
まず最初に必要なものをすべてダウンロードしてしまいましょう。
###Ⅰ. VisualStudio 2017のダウンロード
まずこのリンク先のMicrofoftの公式ページにあるVisual Studio 2017のダウンロードページからファイルをインストールしてください。
▼ページを下へ行くとすぐ画像のようなボタンが見つけられると思います。
▼そうすると以下の画面に移動すると思います。今回は個人で一番左のコミュニティをダウンロードしましょう。これは個人開発向けのものであり無料で利用することができます。
ダウンロードを押すと画面が変わりますが待っていれば勝手にダウンロードされるので待ちましょう。インストーラーが保存されれば完了です。
###Ⅱ. Visual C++のダウンロード
次にこちらもMicrofoft公式ページにあるVisual C++の再頒布用パッケージをダウンロードしておきましょう。リンク先に行くと以下の画像のようなページに飛びます。
今回はVisualStudio2017版のパッケージをダウンロードしますが、下に行くと過去のバージョンもあるので、もし過去のバージョンを使っていれば参照してください。
▼ここで先ほど確かめたと思いますが、使っているPCが64bitならx64を、32bitならばx86をダウンロードしてください。今回は64bitで進めているので下を赤枠で囲みました。ダウンロードされてインストーラーが保存されれば完了です。
###Ⅲ. PHPのダウンロード
メインのPHPをダウンロードしましょう。こちらのPHP公式ダウンロードページからダウンロードできます。
▼1枚目の画像のページへ行きます、もし別のページが表示されても上のナビバーにあるDownloadをクリックするとこの画面に移動できます。
もちろん今回はWindowsでのダウンロードなので赤枠のwindows Downloadをクリックしましょう。
▼そうすると以下の画面に移ります。
今回は最新版のPHP7.3をダウンロードするのですが、4種類ありますね。まずx64とx84ですがこれはVisual C++で説明したものと同じです。自分のbit数に合ったものを選んでください。
次にThread SafeとNon Thread Safeについてですが、Thread SafeはサーバーにApacheを利用する場合、Non Thread SafeはMicrosoftが開発したWebサーバーのIISを使う場合を想定しています。今回はサーバーにApacheを使うのでThread Safeですね。
というわけで今回はVC15 x64 Thread SafeのZipファイルをダウンロードします。Zipファイルが保存されれば完了です。
※注)VC15はVisual C++ 2015のことですが2017版でも動作することを確認しているのでご心配なく。
###Ⅳ. Apacheのダウンロード
最後にApacheをダウンロードしましょう。これはローカルサーバーを起動するために必要になっていきます。
それではこちらのApache Loungeという公式ページからApacheをダウンロードしていきましょう。
▼まず移動すると1枚目の画像のように左にDownloadというリンクがあるのでそれをクリックすると2枚目の画像のページに移動するので、今回も自分のPCと合ったbit数のファイルをダウンロードしてください。
※注)Win64は64bit版、Win32は32bit版です、こちらもVC15ですがVisual C++ 2017でも動作を確認できています。
#2. Visual Studio 2017のインストール
それではインストールに入っていきましょう。



私は念のためMySQLに関係あるデータベースの保存と処理にだけチェックをしておきました、もう一度インストーラーを起動すればこの画面に戻り追加でインストールもできるのでそこまで気にしなくても大丈夫そうです。
あとは右下のインストールボタンを押してインストール開始(画像はインストール済みなので変更になっています)。PCの処理速度にもよりますが結構時間がかかるのでここで一度休憩でもしましょう。
※注)概要欄にも書きましたが、赤枠で囲った「C++によるデスクトップ開発」、これにチェックを入れインストールすれば再頒布用パッケージを適用しなくていい可能性があります(というかむしろ高いです。)なのでこちらをきちんと設定した人は次の再頒布用パッケージの適用を飛ばしても構いません。 (恐らく適用しても大丈夫ですが私は試せていなく不具合が出ないとも限りませんのでもしすべて設定が終わっても動かない場合に試してみるなどでよいと思います)


#3. Visual C++ のインストール
▲こちらのアプリケーションを起動後、変更を加える許可を要求されるので「はい」を選択。
▲このようなインスト―ル画面が立ち上がるので、ライセンスの同意欄にチェックを入れインストールボタンを押せばあとは待つだけです。(画像は2015版になってしまっていますが2017版で大丈夫です)
#4. PHPの解凍と設定
では今回のメインであるPHPの設定をしていきましょう。
###Ⅰ. ダウンロードしたPHPファイル(zip)の解凍と設置
▲このzipファイルを右クリックするとメニューが出てきてその中に「解凍」というボタンがあるのでそれを実行します。


###Ⅱ. 設定ファイルの編集
ここではPHPの機能をきちんと使えるようにするため設定ファイルを編集していきます。始めてみると文字だらけのファイルが出てきて抵抗があるかもしれませんがそんなに難しいことはしないので安心してください。

今回は2000行を超えるテキストの中から数行改編します。行数とキーワードを書いておくので見つけ出してください。エディッタがあれば行数が表示されるのでそちらで見るといいです、なければ行数は出ませんがメモ帳でも大丈夫です。(バージョンによって行数は変わる可能性があるので参考程度にしてください)
※)エディッタでもメモ帳でも「Ctrl+F」を押すと検索窓が出てきます、そこにキーワードを入力すれば見つけられると思います。(Ctrl+FはWebブラウザなども含め様々な場所で使える最強コマンドの1つなので覚えておきましょう)
ではやっていきましょう。

何かミスしたら怖いなという人は僕のようにphp.iniからもう一つコピーを作ってphp.ini~originとでも名前を付けておきましょう。
ではこの名前を変えたphp.iniを編集していきます。
####1. extension_dir(750~760行)
拡張DLLファイルの場所を指定しています。(このphp-7.3.0は先ほど書き換えた名前に応じて適宜変更して下さい)
(変更前)
; Directory in which the loadable extensions (modules) reside.
; http://php.net/extension-dir
;extension_dir = "./"
; On windows:
;extension_dir = "ext"
(変更後)
; Directory in which the loadable extensions (modules) reside.
; http://php.net/extension-dir
extension_dir = "C:/php-7.3.0/ext"
; On windows:
extension_dir = "C:/php-7.3.0/ext"
####2. Dynamic Extensions(880~945行目)
この項目を下に下がると;extension = bz2
から始まり;extensionが無数に続いていると思います。これはphpの拡張機能であり先頭の;(セミコロン)を外すと有効になります。
・mbstring
- 日本語環境の設定
・openssl
- sslを有効にする(ローカル環境でLaravelなどのフレームワークや外部データベースにアクセスする際に必要になります)
・pdo,sql
- データベースにアクセスする際必要になります(メジャーなデータベースは外してあります、他にも使うものがあれば適宜外してください)
(変更前)
;extension=fileinfo
;extension=mbstring
;extension=mysqli
;extension=openssl
;extension=pdo_mysql
;extension=pdo_pgsql
;extension=pdo_sqlite
;extension=sockets
;extension=sqlite3
(変更後)
extension=fileinfo
extension=mbstring
extension=mysqli
extension=openssl
extension=pdo_mysql
extension=pdo_pgsql
extension=pdo_sqlite
extension=sockets
extension=sqlite3
####3. date.timezone(954~957行目)
タイムゾーンを設定します。
(変更前)
[Date]
; Defines the default timezone used by the date functions
; http://php.net/date.timezone
date.timezone = UTC
(変更後)
[Date]
; Defines the default timezone used by the date functions
; http://php.net/date.timezone
date.timezone = Asia/Tokyo
これでphp.iniの編集は終了です。保存して閉じてください。
###Ⅲ. 環境変数の設定
最後に環境変数の設定でパスを通していきます。これは今後使うであろうコマンドプロンプトでの操作を便利にするために設定します。
まずwindowsにはコマンドプロンプトというコマンドでデータベースやファイルを操作するものがあり、本来PHPの操作をするためにはPHPのファイルの場所まで移動しそこから様々な操作をしなければならないのですが、環境変数からパスを設定するとわざわざPHPのファイルに移動せずどこからでもPHPのコマンドを利用できるのです。
難しければコマンドプロンプトで簡単にPHPを使うために必要な設定とだけ覚えてください。
それでは設定していきましょう。
▲まず環境変数の設定画面に行きましょう。bit数を確認した画面の右側に赤枠で囲ったシステム情報を開いてください。(windowsの検索窓から環境変数と調べても出てくるのですが、のちに出てくるシステム環境変数の設定ができないのでこのやり方で出してください)




こちらもPHPファイルを別の名前にしているならばそれに合わせてください。
これで環境変数の設定も完了です。うまくできているか試してみましょう。
###Ⅳ. コマンドプロンプトでPHPを確認してみる
それではコマンドプロンプトでPHPのコマンドが動くか確認してみましょう。


PHPはこれで完了です、お疲れさまでした。次で最後ですので頑張りましょう!
#5. Apacheの解凍と設定
それでは最後にApacheの設定をしていきましょう。
###Ⅰ.ダウンロードしたApacheファイルの解凍と設置
▲httpdから始まるファイルがApacheのファイルです。PHPの時と同じようにzipファイル右クリックでを解凍すると一番左のファイルが出てきます。

###Ⅱ. 設定ファイルの編集
Apache24をC:直下に移動ができたらLocalDiskへと移り、そのままApache24を開いてください。
それではPHPの時と同じく設定ファイルを編集していきましょう。PHPの時と要領は同じです。


バックアップを取ったらhttpd.confをエディッタかメモ帳で開いてください。
Apache、PHP、CGI、SSI用の設定があるのですが、わかりやすく上から書き換えていきたいと思うので各設定ごとにはまとまっていないです。
####1. LoadModule(74~184行目)
ここの行には無数に#LoadModule ~
が並んでいると思うので一番最後の行にLoadModule php7_module "C:/php-7.3.0/php7apache2_4.dll"
を書き込んでください.(php-7.3.0はPHPのファイルにつけた名前にしてください)
LoadModule access_compat_module modules/mod_access_compat.so
LoadModule actions_module modules/mod_actions.so
(中略)
#LoadModule watchdog_module modules/mod_watchdog.so
#LoadModule xml2enc_module modules/mod_xml2enc.so
LoadModule php7_module "C:/php-7.3.0/php7apache2_4.dll" ←コレ!
####2. ServerName(226行目周辺) サーバーネームの設定です。#を外してください。
(変更前)
#ServerName www.example.com:80
(変更後)
ServerName www.example.com:80
####3. AllowOverride(233~236行目周辺) アクセス制限を解除します。後々必要になってくると思うので今のうちにやっておきましょう。 AllowOverrideはいくつかありますが先ほど設定したServerNameのすぐ下のものです。
(変更前)
<Directory />
AllowOverride none
Require all denied
</Directory>
(変更後)
<Directory />
AllowOverride All
Require all granted
</Directory>
####4. Options Index(264行目周辺) 1行目はcgiを動かすために、2行目はsslを動かすために必要です。
(変更前)
Options Indexes FollowSymLinks
(変更後)
Options Indexes FollowSymLinks ExecCGI
Options +Includes
####5. IfModule mime_module(398~444行目周辺) 拡張子(.php .phps .cgi .pl)の登録です。今後必要になるかもしれないのでphpだけではなくcgiとplも登録しておきましょう。
# AddType allows you to add to or override the MIME configuration
のすぐ上、406行目辺りに書いてください。
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
####6. AddHandler,AddType(431~443行目周辺) こちらも拡張子の設定です。#がつけられているので外してその下にPHPの設定も書いておきましょう。
(変更前)
#AddHandler cgi-script .cgi
(中略)
#AddType text/html .shtml
#AddOutputFilter INCLUDES .shtml
(変更後)
AddHandler cgi-script .cgi .pl
AddHandler php7-script .php
(中略)
AddType text/html .shtml
AddOutputFilter INCLUDES .shtml
####7. PHPIniDir このファイルの最後にこの1行を書き加えておいてください。PHPの設定した際に編集したphp.iniファイルのパスを指定します。
PHPIniDir "C:/php-7.3.0"
これで設定ファイルの編集は終了です。保存して閉じてください。
###Ⅲ. Apacheの起動の確認
それではApacheを起動させてみましょう。Apache24フォルダへと戻り一番上の「bin」というファイルを開いてください。




###Ⅳ. PHPファイルを実行
いよいよ最後です。phpファイルを実行してみましょう。

<?php
phpinfo()
?>

#最後に
PHPの環境構築の段階でつまずいて時間ややる気を奪われるのは大変もったいないのでできる限り簡単に解説をしました。分かりやすく書いたつもりですが、難しい点や間違えている点があれば教えていただけると助かります。
また皆さんPHPで作りたいものがあって環境構築をしたのだと思います。これでスタート地点に立つことができたのでぜひ作りたいものに向けて頑張ってください。
次はローカル環境でアプリケーションを開発する際に欠かせないMySQLの導入について書ければと思います。