WindowsにPHPを導入してVSCodeで開発を始めるまでの手順

# はじめに

Windows上に最新版のPHPをインストールして使い始めるまでに必要な最低現の手順を、備忘録としてメモしてみました。
このドキュメントは**ローカル開発環境**の構築をターゲットにしていて、Webサーバ環境は目的としていませんのでご注意ください。

# 事前準備

## 再頒布可能パッケージのインストール
PHPバイナリの実行に「Visual Studio 2015 の Visual C++ 再頒布可能パッケージ」が必要な為、以下よりダウンロード・インストールしておく。
https://www.microsoft.com/ja-jp/download/details.aspx?id=48145

# インストール手順

## PHPのインストール
以下の手順でPHP For Windowsをインストールする。

1. PHP For Window をダウンロードする<br>
http://windows.php.net/download<br>
※スレッドセーフ・ノンスレッドセーフ版があるので、以下を選択するとよい。（詳しくは[PHPマニュアル](http://php.net/manual/ja/faq.obtaining.php#faq.obtaining.threadsafety)を参照）<br>
  * Apacheを使いたい場合 … スレッドセーフ版<br>
  * NGINXを使いたい場合 … ノンスレッドセーフ版<br>
  * 開発のみに使いたい場合 … スレッドセーフ版（どちらでも可）<br>
2. 適当なディレクトリに解凍して**Pathを通す**
3. "php.ini-development"を"php.ini"として複製する
4. "php.ini"をテキストエディタで編集し、以下の設定を変更する

```ini:php.ini
extension = php_openssl.dll
:
[Date]
date.timezone = Asia/Tokyo
:
[mbstring]
mbstring.language = Japanese
mbstring.encoding_translation = Off
mbstring.detect_order = auto
mbstring.substitute_character = none
:
```
※この変更は必要最低限なので、**公開環境（HTTPサーバ等）で動かす場合は他にもセキュリティ対策のための設定を行う**必要がある。

コマンドプロンプトで"php -v"を実行し、以下のように出力されたら成功。

```
> php -v
PHP 7.1.6 (cli) (built: Jun  8 2017 01:52:52) ( NTS MSVC14 (Visual C++ 2015) x64 )
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.1.0, Copyright (c) 1998-2017 Zend Technologies
```

ついでなのでPHPコマンドをもう少し動かしてみよう。
コマンドプロンプトで以下のコマンドを実行すると、現在時刻が出力される。
※現在時刻が9時間ずれている場合は、"php.ini"の設定"date.timezone"が変更されているか確認しよう。

```
> php -r "print date('Y-m-d H:i:s');"
2017-10-20 12:34:56
```

## Composerのインストール
ComposerはPHP開発者によって最近よく使われているパッケージマネージャ（[Node.js](https://nodejs.org/ja/)でいうところの[npm](https://www.npmjs.com)のようなツール）である。
以前は公式パッケージマネージャの[PEAR](https://pear.php.net)がよく使わていたが、最近はほとんどがComposerで配布されているので、インストールすることを強く推奨する。

1. 以下の説明に従い、Composerをインストールする。<br>
https://getcomposer.org/doc/00-intro.md#installation-windows

コマンドプロンプトで"composer -V"を実行し、以下のように出力されたら成功。

```
> composer -V
Composer version 1.5.2 2017-09-11 16:59:25
```

インストール後、Composerを最新版にアップデートする場合、以下のコマンドを実行する。

```
> composer self-update

[成功した場合の出力]
Updating to version 1.5.2 (stable channel).
   Downloading (100%)
Use composer self-update --rollback to return to version 1.5.1

[アップデートの必要がない場合の出力]
You are already using composer version 1.5.2 (stable channel).
```

## XDebugのインストール

XDebugは必須モジュールではないが、設定しておくとVSCode等の開発環境から**リモートデバッグ**できるうようになり、ブレークポイントを設置したり変数を評価したり、色々と捗って楽しい。
※PHP5.x以前は標準デバッガとして付属していたが、PHP7.xからは付属されなくなった。この為、以下の手順にて手動でインストールする必要がある。
※リモートデバッガは**公開環境（本番環境）にインストールしない**ように注意すること。

1. "php_xdebug.dll"をダウンロードする
https://xdebug.org/download.php
2. "php_xdebug.dll"をPHP内"ext/"ディレクトリに配置する<br>
※"php_xdebug-2.5.5-7.1-vc14-nts-x86_64.dll"のようなファイル名なのでリネームを推奨
3. "php.ini"をテキストエディタで編集し、以下の設定を追記する

```ini:php.ini
zend_extension=php_xdebug.dll

[XDebug]
xdebug.dump_undefined = 1
xdebug.remote_enable = 1
xdebug.remote_host=localhost
xdebug.remote_port=9000
xdebug.remote_handler=dbgp
xdebug.remote_mode=req
xdebug.remote_autostart = 1
```

コマンドプロンプトで"php -v"を実行し、以下のように出力されたら成功

```
> php -v
PHP 7.1.6 (cli) (built: Jun  8 2017 01:52:52) ( NTS MSVC14 (Visual C++ 2015) x64 )
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.1.0, Copyright (c) 1998-2017 Zend Technologies
    with Xdebug v2.5.5, Copyright (c) 2002-2017, by Derick Rethans
```

# VSCodeの設定

以下の拡張機能をインストールする事で、インテリセンスとリモートデバッグが使えるようになる。

1. 拡張機能「[PHP Extension Pack](https://marketplace.visualstudio.com/items?itemName=felixfbecker.php-pack)」をインストールする
2. ファイル→基本設定→設定にて以下を設定する

```json:ユーザー設定
{
    "php.suggest.basic": false,
    "php.validate.executablePath": "c:/path_to/php.exe",
    "php.executablePath": "c:/path_to/php.exe"
}
```