Windows 7 64bit + PHP 7.1 / インストール&セットアップ 備忘録

  • Twitter
  • Facebook
  • Pinterest
  • Hatena
  • instagram
  • YouTube

前回の Apache2.4 インストール&セットアップ備忘録に続いて今回はPHPの備忘録。

ローカルPCにてWEBサーバー(HTTPサーバー)を動かすだけでも仮想WEBサイトの構築やWEBページ(htmlファイル)の確認は可能ですが、PHPの開発環境も整っていれば何かと便利ですし、実際、コレが無いと自分は手も足も出ないのデス…(´・ω・`)

まだまだ PHP 5.x のシステムも多数残っていますが、今後は徐々に PHP 7.x に移行していくでしょうから、ココはひとつ私も PHP 7.x で逝ってみようかなと・・・

メジャーVer.は 7 で行くとして、マイナーVer.をどうするか?

諸事情により今回は Ver.7.1 で、リビジョンは現時点で最新の 0.0.20 としました。
※)PHP 7.2.x でも基本的なインストール手順は同じハズです…(多分)

ココでは Apache2.4 のインストールを完了し、既に Apacheサーバーが稼働している前提で進めて行きますが、例によってWindowsには管理者権限のアカウントでログインしておきます。
 

■関連記事
Windows 7 64bit + MySQL 5.6 / インストール&セットアップ 備忘録 – roomX.jp
Windows 7 64bit + Apache 2.4 / インストール&セットアップ 備忘録 – roomX.jp
 

1. PHP 7.1.x のダウンロード

PHP.net TOP

PHPの公式サイトにアクセスし上部の Downloads をクリック。

PHP.net TOP

2番目の見出し Old Stable PHP 7.1.20 (Changelog) にある

Windows downloads のリンクをクリック。

お目当ての PHP 7.1.20 は計4つのバージョンが掲載されていますが、ざっくりと説明すると…

Non Thread Safe — WEBサーバーが IIS の場合
Thread Safe — WEBサーバーが Apache の場合

x64 — Windows 64bit版対応
x86 — Windows 32bit版対応

となります。

※)アクセス日時によりバージョンが異なる場合があります。(2018/08/15時点の7.1系最新版は 7.1.20 でした)

※)IIS とは、Microsoft Internet Information Services の略称で、簡単に言えば Windows Server 2008 のようなMS製のサーバー製品の事です。

PHP.net TOP

今回はOSが Windows 7 64bit、HTTPサーバーは Apache を使用するので、二番目の VC14 x64 Thread Safe (2018-Jul-19 11:54:52) に登録されている php-7.1.20-Win32-VC14-x64.zip をダウンロードします。

環境によっては、Visual Studio 2015(VC14)の Visual C++ 再頒布可能パッケージがないと動作してくれません。

PHP.net TOP

ダウンロードページの左列に VC++関連のダウンロードリンクが設置されているので、VC14 (x64) の zipファイルをダウンロードしてインストールします。

2. PHP 7.1.x のインストール

setup.exe などのインストールプログラムは用意されていないので、ダウンロードしたファイルを任意のフォルダに解凍すれば、ひとまずインストールは完了です。

任意のディレクトリに PHP 7.1.20 を解凍しますが、ディレクトリが散らばると後々の管理が面倒なので、前回 Apache 2.4 をインストールした 《svs》 フォルダに 《php_7.1.20》 というサブフォルダを作成し解凍しました。

PHP install

フォルダの名称は単純に php としても良いのですが、PHPの旧バージョンや新しいバージョンをインストールして試したい場合に少々面倒です。なので、今回は異なるバージョン毎に別々のフォルダを作成してインストールするようにしました。(この方法だとPHPバージョンを切り替える度にWindowsの環境変数やhttpd.confを編集する必要があります)

PHP install

C:¥
 └ svs
     ├ Apache24
     ├ php_5.6.37 ← 検証用
     ├ php_7.1.20 ← 今回はココに展開
     ├ ...

フォルダ名や階層構造に特に基準や標準などは設けられていないので、自分で使いやすいようにフォルダ階層を決めればOKです。(何処にインストールしたかぐらいは覚えておきませう…)

但し、Windowsの命名規則は守らなければなりませんし、あまり深い場所(階層)にディレクトリを置くとコマンドラインが長くなり、ファイルを参照するのに手間取ることになります。

3. PHPの環境設定

PHPファイルを展開したフォルダにある php.ini-production を探します。

php.ini の編集

php.ini-production を見つけたら同一フォルダ内にコピーします。

php.ini の編集

コピーファイルを php.ini にリネーム(ファイル名変更)します。

php.ini の編集
php.ini の編集

※この php.ini は後で内容を編集します。

Windows 7 – システム環境変数の設定

コントロールパネル
システム

[コントロールパネル]→[システム]→[システムの詳細設定]を開き、[環境変数(N)…]ボタンをクリック。

システムの詳細設定
システムの詳細設定

システム環境変数欄の “Path” の項目を探し、[編集(I)…]ボタンをクリック。


;C:¥svs¥php_7.1.20

記述されている値の末尾に、上記の通りPHPをインストールしたフォルダのフルパスを追記しますが、フルパスの先頭に区切り記号となる【;】記号を忘れずに付けてください。

システム環境変数の編集

※)既に記述された部分をイジると、Windowsシステムやインストール済みソフトウェアの動作に支障が出るので要注意です。

編集が終わったら[OK]を押して環境変数の設定を終了、Windowsを再起動します。

システム環境変数の “Path” ってのは、常にシステムから見える(監視状態にある)場所が登録してあって、それが愛の告白なのか…、それとも怨嗟に満ちた呪詛なのかは不明ですが、『世界の何処に居てもオマエを見つけてやるぅ!』…ってのを、Windowsが実践しているみたいなモンです。(※超乱暴な例え)

ユーザー環境変数とシステム環境変数の違いは…、ググってみてください。(^^;

PHPが正しくWindowsに組み込まれているか調べるには、cmd を開いて…


php -v

…と入力し【Enter】キーを押します。

cmd
php -v

下図のように表示されれば、取り敢えずPHPのインストールは完了です。

php -v

4. httpd.conf の編集

■参考■
Apache HTTP サーバ バージョン 2.4 ドキュメント
動的共有オブジェクト (DSO) サポー
Apache のハンドラの使用
 

動的共有オブジェクト (DSO) の登録

続いてApache上でPHPが動作するようにセットアップを行います。

httpd.conf

Apache2.4 をインストールしたフォルダの 《conf》 フォルダ内、httpd.conf を開きます。

httpd.conf
httpd.conf

【# Dynamic Shared Object (DSO) Support】を探します。

多数の 「#LoadModule…」 が記述されていますが、一番最後に…


LoadModule php7_module c:/svs/php_7.1.20/php7apache2_4.dll

…の1行を加え、PHP7 を動的モジュールの一つとして登録します。

httpd.conf
httpd.conf

※)php7apache2_4.dll のインストールパスは自分の環境に合わせて書き換えが必要です。

拡張子(.php)の登録

.phpの拡張子を持つPHPファイルにアクセスがあった場合、PHPが正しく処理できるようにphp拡張子を httpd.conf に登録します。

httpd.conf の最後に…


#PHP extention (.php)
#
<FilesMatch "¥.php$">
    AddHandler php7-script .php
    AddType application/x-httpd-php .php
</FilesMatch>

…を追加します。

extention

※)先頭に#が付いているとコメント(注釈)として解釈されます。
※)コメントは無くても構いませんが、多分、自分はイジくり回すので…
※)正規表現で.phpの拡張子を限定指定しているのがカッコイイ…
 

以前は…


<IfModule mime_module>
    AddType application/x-httpd-php .php
    AddType application/x-httpd-php-source .phps
</IfModule>

mime_module モジュールとして↑の2行を追加していましたが、今回は Adminwebさんの【.php拡張子を登録する】 を参考にさせていただきました♪(^^ゞ

php.ini パスの登録

php.ini はPHPの動作を細かく指定・制御するための環境設定ファイルで、PHPをインストールした際に php.ini-production をコピーしてリネームして作成した例のアレです…。


#PHP php.ini-path
#
<IfModule php7_module>
    PHPIniDir C:/svs/php_7.1.20/
</IfModule>

php.ini - path

モジュールは記述しなくても良さげですが、後から見ても判りやすいように…って事で。

Apache service

httpd.conf の編集が終わったら Apache サービスを再起動させます。

5. PHP の動作確認

簡単なコードを書いて、実際にApache上でPHPが動作しているか確認してみます。

テキストエディタを開いて以下の3行を記述します。


<?php
phpinfo();
?>

test.php

入力が終わったらファイル名を test.php として Apacheをインストールしたフォルダの 《htdocs》 フォルダに保存します。

htdocs
htdocs

ブラウザを開いて localhost/test.php とURLを入力。(test.phpまで入力)

test.php
test.php

右のように表示されれば、取り敢えずPHPのインストール&セットアップは完了しています。

画像ライブラリ GD のインストール

GD は画像処理関連の関数を使用する場合に必須となるライブラリです。

GDのインストール方法をググってみると CUIでコマンドを打ち込んで…というのが数多くヒットしますが、Windows OS の場合は php.ini の一行を編集するだけです。

test.php
test.php

extension=php_gd2.dll の先頭に記述されている;(セミコロン)を削除します。

編集後に php.ini を上書き保存、Apache を再起動するだけでGDライブラリが使用可能になります。

GDライブラリの有効・無効、phpinfo() や gd_info() で確認できます。

test.php

index.php の優先順位

MEMO:403 Forbidden

Windows10 をクリーンインストールした場合など、新規にApacheをインストールした時は、httpd.conf 内、以下に記す DirectoryIndex に、実行優先順位に関係なく(ココ重要!)index.php を記述しないと、phpMyAdminをインストール、実行する場合などに『403 Forbidden』のエラーが発生します。

同一ディレクトリ内に index.html と index.php が混在した場合、デフォルト設定では index.html が優先されますが、これだと index.php をTOPページとして最優先に実行したい場合に困った事になります。(両方混在するケースは希かと思いますが…)

先程の test.php を index.php にリネームして検証してみます。

test.php
index.php

URL欄に localhost とだけ入力すると、Apacheサーバーは index.php ではなく index.html を優先して読み込みました。

test.php

この動作は httpd.conf の dir_module に記述された値の順番で優先順位の変更が可能です。


<IfModule dir_module>
    DirectoryIndex index.html
</IfModule>

DirectoryIndex

デフォルトでは DirectoryIndex に index.html だけが記述されていますが、ココに…


<IfModule dir_module>
    DirectoryIndex index.html index.php
</IfModule>

DirectoryIndex

… index.php を追記します。

・・・が、“記述された値の順番で制御される” ので index.php を最優先にしたいならば…


<IfModule dir_module>
    DirectoryIndex index.php index.html
</IfModule>

DirectoryIndex

index.html よりも前に index.php を記述します。
 

httpd.conf を上書き保存してApacheを再起動後、再度ブラウザを開いてURL欄に localhost とだけ入力すると…

index.php

今度は、test.php からリネームした index.php がTOPページとして読み込まれました。

ちなみに、index.htm や index.c などを追記すれば、記述された値の順番で処理されます。また、index + 拡張子としなくとも、test.php が先頭に記述されていれば、ディレクトリのTOPページとして test.php が最優先で読み込まれます。

ディレクトリ参照の無効化

dir_module にて index.html や index.php の優先順位を指定しましたが、そのどちらのファイルも存在しなかったり、無効なファイルを指定した場合に、ディレクトリの一覧(ディレクトリ・インデックス)がブラウザに表示されてしまいます。

Options Indexes FollowSymLinks

ローカル環境のみで運用する場合は、コレはコレで便利だったりするのですが、セキュリティ的にはあまり好ましくないので、【403 Forbidden】が表示されるように httpd.conf を編集します。

テキストエディタで httpd.conf を開き、266行目辺りにある…


    Options Indexes FollowSymLinks

…の1行にて Indexes の部分を削除し…


    Options FollowSymLinks

…とします。

Options Indexes FollowSymLinks
Options FollowSymLinks

修正後、httpd.conf を上書き保存してApache を再起動。

Options Indexes FollowSymLinks

同じディレクトリにアクセスしてもディレクトリ一覧は表示されなくなり【403 Forbidden】が表示されるようになりました。
※)大抵の有料レンタルサーバーでは、この設定が有効となっているハズです。

php.ini の編集

php.ini

php.ini の内容を編集すれば、PHPの細かな動作制御を行えますが・・・

項目が多岐に渡るので、追々って事で・・・(^^;

次回は、サーバー三兄弟の最後となる MySQL 5.6 & phpMyAdmin のインストールを行います。

カテゴリー: Apache, HTML, MySQL, PC, PHP, プログラミング タグ: , , , パーマリンク

コメント投稿