ソースに絡まるエスカルゴ

貧弱プログラマの外部記憶装置です。

【Windows10/PHP/Apatch】Windows10にPHPとApacheを入れる

 今までPHPとかを触ってこなかったのですが、なんとなく「触ってみるか」という気持ちになったのでWindows10 Homeに環境構築してみた次第です。

 色々と間違ってたり足りない部分もあるような気がしますが、Apacheを起動させてPHPファイルの内容も表示できるところまではいったのでその備忘録です。

 もっとこうした方がいいなどあればコメントをお願いします。

 では、始めます。


1:Visual Studioのインストール
 後々にC++コンパイラが必要になるので、先にVisual Studio経由でC++コンパイラを入れます。

 以下のページを開きます。

 個人利用なのでCommunityを選択してダウンロードします。
f:id:rikoubou:20200717151816p:plain

 ダウンロードしたインストーラを起動させて指示通りに進めていきます。進めていくと途中で以下のような画面になりますが、コンパイラさえ入ればいいので「C++によるデスクトップ開発」にのみチェックを入れてインストールします。
f:id:rikoubou:20200717151855p:plain
 
 これで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ファイルをダウンロードします。
f:id:rikoubou:20200717153005p:plain

 ダウンロードしたzipファイルをzipファイルのそのままの名前のフォルダである「php-7.4.8-Win32-vc15-x64」に解凍します。解凍したらフォルダ「php-7.4.8-Win32-vc15-x64」をCドライブ直下に移動させます。
f:id:rikoubou:20200717153558p:plain

 移動させたら「php-7.4.8-Win32-vc15-x64」フォルダ内にある「php.ini-development」ファイルをコピーして「php.ini」に変更します。
f:id:rikoubou:20200717154603p:plain

 作成した「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」を右クリックして「プロパティ」を選択します。
f:id:rikoubou:20200717160832p:plain

 以下のような画面になるので「システム詳細設計」をクリックします。
f:id:rikoubou:20200717161003p:plain

環境変数」ボタンをクリックします。
f:id:rikoubou:20200717161058p:plain

 システム環境変数の「Path」を選択した状態で「編集」ボタンをクリックします。
f:id:rikoubou:20200717161304p:plain

「新規」ボタンをクリックして「C:\php-7.4.8-Win32-vc15-x64」と入力して追加します。追加したら「OK」ボタンをクリックします。
f:id:rikoubou:20200717161509p:plain

 これで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の方をダウンロードします。
f:id:rikoubou:20200717165017p:plain

 ダウンロードしたzipファイルを解凍した中に「Apache24」というフォルダがあるので、そのフォルダをphpの時と同じようにCドライブ直下に移動させます。
f:id:rikoubou:20200717165537p:plain

 移動させたら「Apache24」フォルダの中にある「conf」フォルダを開きます。「httpd.conf」ファイルをコピーして「httpd_bk.conf」としてバックアップとして元ファイルを残しておき、「httpd.conf」ファイルの方を変更していきます。
f:id:rikoubou:20200717165859p:plain

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


226行目あたり変更後(コメントアウトを外す)

# 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」をダブルクリックすることで起動できます。
f:id:rikoubou:20200717171623p:plain

 ダブルクリックすると以下のような黒い画面が立ち上がります。
f:id:rikoubou:20200717171703p:plain

 この状態でブラウザを開いて「http://localhost/」のアドレスにアクセスすると「It works!」という文字だけ書かれたページが表示されます。
f:id:rikoubou:20200717171847p:plain

 Apacheを起動させている黒い画面をウインドウ右上の「×」ボタンで閉じてから、更新したり改めて「http://localhost/」のアドレスにアクセスすると以下のようにページは表示されません。
f:id:rikoubou:20200717172040p:plain

 これで「httpd.exe」でApacheを起動してないとページが表示されていないことがわかったので、Apacheがちゃんと動いていることが確認できました。


4:PHPファイルの実行
 PHPApacheの準備ができたので、今度はブラウザからPHPのファイルが実行できているかを確認します。

「Apache24」フォルダ中にある「htdocs」フォルダを開いて「test.php」の空のテキストファイルを作成します。
f:id:rikoubou:20200717172543p:plain

 test.phpファイルをテキストエディタで開き、以下のように記述して上書き保存します。

・test.pnp

<?php
phpinfo()
?>

 保存できたら「httpd.exe」でApacheを起動させ、「http://localhost/test.php」のアドレスにアクセスすると、以下のようにPHPの情報が色々と載っているページが表示されます。
f:id:rikoubou:20200717172936p:plain

 これでPHPで記述した部分も動いていることが確認できました。


 以上がWindows10にPHPApacheを入れる方法です。

 ApachePHPも初心者なので足りない部分や間違っている部分もあるかと思いますが、自分のところではこの方法で環境構築できたのでとりあえずは目的達成です。

 ただ2020年という時代に環境構築にここまで手間が必要というのはどうなんだ? という個人的な疑問は浮かびました……。

 とはいえ環境はできたので、PHPの勉強も暇なときはやっていきたいかなと思っています。


・参考資料