Bash on Ubuntu on Windows で phpenv のインストールメモ

※すべて終わるまでかなり時間がかかる＆ハマる可能性があるので余裕がある時に。

```sh:Ubuntu-on-Windowsのバージョン
$ cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=14.04
DISTRIB_CODENAME=trusty
DISTRIB_DESCRIPTION="Ubuntu 14.04.5 LTS"
```

## Git のインストール（入ってない場合）

リポジトリの追加

```sh:Gitリポジトリ追加
$ sudo add-apt-repository -y ppa:git-core/ppa
```

インストール

```sh:Gitのインストール
$ sudo apt-get update && sudo apt-get install git -y
```

バージョン確認

```sh:Gitのバージョン確認
$ git --version
git version 2.7.3
```

## phpenv と php-build のインストール

それぞれインストールするのは面倒なので、一度でインストールするシェルスクリプトを利用。
https://github.com/rogeriopradoj/phpenv-installer

```sh:phpenv、php-buildの一括インストール
$ curl -L http://git.io/phpenv-installer | bash
```

インストールできたらパスを通すための処理

```sh:パスを通す
$ echo 'export PATH="$HOME/.phpenv/bin:$PATH"' >> ~/.bashrc
$ echo 'eval "$(phpenv init -)"' >> ~/.bashrc
$ exec $SHELL -l
```

PHPのビルドに必要なものを全てインストール。

```sh:依存パッケージの一括インストール
$ sudo apt-get install -y libssl-dev libmcrypt-dev libreadline-dev libxslt1-dev libxml2-dev libbz2-dev libcurl4-openssl-dev libpng-dev libjpeg-dev libmcrypt-dev libsqlite-dev libtidy-dev libltdl-dev make autoconf automake re2c lemon
```

**[bison](http://packages.ubuntu.com/ja/precise/bison)** というライブラリが必要なんだけど、PHP 5.3 が **2.6.2** 以前でないとビルドできない。
ので、敢えて古いバージョンをインストール。

```sh:bisonインストール
$ wget http://launchpadlibrarian.net/121520545/libbison-dev_2.6.2.dfsg-1_amd64.deb
$ wget https://launchpad.net/ubuntu/+source/bison/1:2.6.2.dfsg-1/+build/3935803/+files/bison_2.6.2.dfsg-1_amd64.deb
$ sudo dpkg -i libbison-dev_2.6.2.dfsg-1_amd64.deb
$ sudo dpkg -i bison_2.6.2.dfsg-1_amd64.deb
```

ここまでが下準備。

## 各バージョンの PHP をインストール

インストールできる PHP のバージョン一覧を確認（[このページ下部に列挙](#対応しているphpバージョン一覧)）

```sh:バージョン一覧
$ phpenv install -l
```

欲しいバージョンをインストール。
（ここでは 5.3.29 、 5.6.26 、 7.0.11 の3つ）
ちなみに終わるまでめっっっちゃ時間かかる。

```sh:各バージョンをインストール
$ phpenv install 5.3.29 && phpenv install 5.6.26 && phpenv install 7.0.11
```

インストール後は各コマンドが使えるようにするための更新が必要

```sh:hash更新
$ phpenv rehash
```

## 切り替えてみる

PHP 7.0.11 に指定

```sh:ver7.0.11に指定
$ phpenv global 7.0.11
```

インストール状況の確認

```sh:インストール状況の確認
$ phpenv versions
  5.3.29
  5.6.26
* 7.0.11 (set by /home/me/.phpenv/version)
```

バージョン確認

```sh:バージョン確認
$ php --version
PHP 7.0.11 (cli) (built: Oct  4 2016 16:57:20) ( NTS )
Copyright (c) 1997-2016 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2016 Zend Technologies
    with Zend OPcache v7.0.11, Copyright (c) 1999-2016, by Zend Technologies
    with Xdebug v2.4.1, Copyright (c) 2002-2016, by Derick Rethans
```

PHP 5.3.29 に指定

```sh:ver5.3.29に指定
$ phpenv global 5.3.29
```

バージョン確認

```sh:バージョン確認
$ php --version
PHP 5.3.29 (cli) (built: Oct  4 2016 15:19:15)
Copyright (c) 1997-2014 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2014 Zend Technologies
    with Xdebug v2.2.7, Copyright (c) 2002-2015, by Derick Rethans
```

ちゃんと変わってる模様。
開発向けのライブラリだからか、XDebug がデフォルトで有効になっている。


## 対応しているPHPバージョン一覧

```sh:2016-10-04時点
$ phpenv install -l
Available versions:
  5.2.17
  5.3.2
  5.3.3
  5.3.6
  5.3.8
  5.3.9
  5.3.10
  5.3.11
  5.3.12
  5.3.13
  5.3.14
  5.3.15
  5.3.16
  5.3.17
  5.3.18
  5.3.19
  5.3.20
  5.3.21
  5.3.22
  5.3.23
  5.3.24
  5.3.25
  5.3.26
  5.3.27
  5.3.28
  5.3.29
  5.4.0
  5.4.1
  5.4.2
  5.4.3
  5.4.4
  5.4.5
  5.4.6
  5.4.7
  5.4.8
  5.4.9
  5.4.10
  5.4.11
  5.4.12
  5.4.13
  5.4.14
  5.4.15
  5.4.16
  5.4.17
  5.4.18
  5.4.19
  5.4.20
  5.4.21
  5.4.22
  5.4.23
  5.4.24
  5.4.25
  5.4.26
  5.4.27
  5.4.28
  5.4.29
  5.4.30
  5.4.31
  5.4.32
  5.4.33
  5.4.34
  5.4.35
  5.4.36
  5.4.37
  5.4.38
  5.4.39
  5.4.40
  5.4.41
  5.4.42
  5.4.43
  5.4.44
  5.4.45
  5.4snapshot
  5.5.0
  5.5.1
  5.5.2
  5.5.3
  5.5.4
  5.5.5
  5.5.6
  5.5.7
  5.5.8
  5.5.9
  5.5.10
  5.5.11
  5.5.12
  5.5.13
  5.5.14
  5.5.15
  5.5.16
  5.5.17
  5.5.18
  5.5.19
  5.5.20
  5.5.21
  5.5.22
  5.5.23
  5.5.24
  5.5.25
  5.5.26
  5.5.27
  5.5.28
  5.5.29
  5.5.30
  5.5.31
  5.5.32
  5.5.33
  5.5.34
  5.5.35
  5.5.36
  5.5.37
  5.5.38
  5.5snapshot
  5.6.0
  5.6.1
  5.6.2
  5.6.3
  5.6.4
  5.6.5
  5.6.6
  5.6.7
  5.6.8
  5.6.9
  5.6.10
  5.6.11
  5.6.12
  5.6.13
  5.6.14
  5.6.15
  5.6.16
  5.6.17
  5.6.18
  5.6.19
  5.6.20
  5.6.21
  5.6.22
  5.6.23
  5.6.24
  5.6.25
  5.6.26
  5.6snapshot
  7.0.0
  7.0.1
  7.0.2
  7.0.3
  7.0.4
  7.0.5
  7.0.6
  7.0.7
  7.0.8
  7.0.9
  7.0.10
  7.0.11
  7.0snapshot
  7.1.0RC3
  7.1snapshot
  master
```


- - - - -

## 駄文

Bash on Ubuntu on Windows で phpenv をインストールしている記事がググっても見つからなかった。
どうやら Mac で使うようにできているらしく、普通の Ubuntu に入れようとしている人たちがことごとくハマっていて、この記事書くのにも何度もやり直し、なんとか動作するまでに漕ぎつけた・・・