mac の phpenv で php 7.1.9 をインストールするメモ

クリーンインストール済みの OSX el capitan に anyenv をインストールして、 anyenv にインストールした phpenv から php 7.1.9 をインストールした。

何度もやってるけど、忘れてしまうことが多いのでメモ。

## インストール

インストール可能な一覧を知るために以下のコマンドを実行し、一覧からインストールしたいバージョンを探す。

```shell

$ phpenv install --list
  7.1.8
  7.1.9
  7.1snapshot
  7.2.0
  7.2.1
  7.2snapshot
  master
```

今回はとりあえず 7.1.9 をインストールするので `$ phpenv install 7.1.9` を実行する。

で実行すると以下のように BUILD ERROR となった。

```shell
$ phpenv install 7.1.9

-----------------
|  BUILD ERROR  |
-----------------

Here are the last 10 lines from the log:

-----------------------------------------
configure: WARNING: This bison version is not supported for regeneration of the Zend/PHP parsers (found: 2.3, min: 204, excluded: ).
configure: WARNING: You will need re2c 0.13.4 or later if you want to regenerate PHP parsers.
configure: error: Cannot find OpenSSL's <evp.h>
-----------------------------------------
```

エラー３つ。

- bison のバージョンが低いよ
- re2c が必要だよ
- openssl の evp.h が見つからないよ

ってことらしい。

bision, re2c は brew からインストールして、 openssl のエラーは PHP_BUILD_CONFIGURE_OPTS を指定して解決する。

以下のコマンドでインストールして、 bison は link する。

```shell
$ brew install bison
$ brew link bison --force
$ brew install re2c
$ brew install openssl
```

必要そうなものをインストールしたので、以下のコマンドで再度 7.1.9 のインストールを試みる。

```shell
$ PHP_BUILD_CONFIGURE_OPTS="--with-openssl=$(brew --prefix openssl)" phpenv install 7.1.9

-----------------
|  BUILD ERROR  |
-----------------

Here are the last 10 lines from the log:

-----------------------------------------
configure: error: jpeglib.h not found.
-----------------------------------------
```

PHP_BUILD_CONFIGURE_OPTS 環境変数を用いて、 openssl の path を指定している。

で、またもエラー。

libjpeg がないから生じているらしい。

と、言うことで brew からインストールする。

```shell
$ brew install libjpeg
```

で再び php 7.1.9 のインストール。

```shell
$ PHP_BUILD_CONFIGURE_OPTS="--with-openssl=$(brew --prefix openssl)" phpenv install 7.1.9

-----------------
|  BUILD ERROR  |
-----------------

Here are the last 10 lines from the log:

-----------------------------------------
configure: error: png.h not found.
-----------------------------------------
```

libpng がないから生じているらしい。

と、言うことで brew からインストールする。

```shell
$ brew install libpng
```

で再び php 7.1.9 のインストール。

```shell
$ PHP_BUILD_CONFIGURE_OPTS="--with-openssl=$(brew --prefix openssl)" phpenv install 7.1.9

-----------------
|  BUILD ERROR  |
-----------------

Here are the last 10 lines from the log:

-----------------------------------------
configure: error: Unable to detect ICU prefix or no failed. Please verify ICU install prefix and make sure icu-config works.
-----------------------------------------
```

icu4c がないから生じているらしい。

と、言うことで brew からインストールする。

また、 link もしておく。

```shell
$ brew install icu4c
$ brew link icu4c --force
Linking /usr/local/Cellar/icu4c/60.2... 61 symlinks created

If you need to have this software first in your PATH instead consider running:
  echo 'export PATH="/usr/local/opt/icu4c/bin:$PATH"' >> ~/.bash_profile
  echo 'export PATH="/usr/local/opt/icu4c/sbin:$PATH"' >> ~/.bash_profile
```

で再び php 7.1.9 のインストール。

```shell
$ PHP_BUILD_CONFIGURE_OPTS="--with-openssl=$(brew --prefix openssl)" phpenv install 7.1.9

-----------------
|  BUILD ERROR  |
-----------------

Here are the last 10 lines from the log:

-----------------------------------------
configure: error: mcrypt.h not found. Please reinstall libmcrypt.
-----------------------------------------
```

mcrypt がないから生じているらしい。

と、言うことで brew からインストールする。

```shell
$ brew install mcrypt
```

で再び php 7.1.9 のインストール。

```shell
$ PHP_BUILD_CONFIGURE_OPTS="--with-openssl=$(brew --prefix openssl)" phpenv install 7.1.9

-----------------
|  BUILD ERROR  |
-----------------

Here are the last 10 lines from the log:

-----------------------------------------
^
1 warning generated.
PEAR package PHP_Archive not installed: generated phar will require PHP's phar extension be enabled.
Configuring for:
PHP Api Version:         20160303
Zend Module Api No:      20160303
Zend Extension Api No:   320160303
Cannot find autoconf. Please check your autoconf installation and the
$PHP_AUTOCONF environment variable. Then, rerun this script.
-----------------------------------------
```

autoconf がないから生じているらしい。

と、言うことで brew からインストールする。

```shell
$ brew install autoconf
```

で再び php 7.1.9 のインストール。

```shell
$ PHP_BUILD_CONFIGURE_OPTS="--with-openssl=$(brew --prefix openssl)" phpenv install 7.1.9

[Success]: Built 7.1.9 successfully.
```

インストールできた！

ついでにインストールした php 7.1.９ に対して composer をインストールする。

まずは global の php のバージョンを 7.1.9 にする。

```bash
$ phpenv global 7.1.9
$ php --version
PHP 7.1.9 (cli) (built: Jan 15 2018 03:25:19) ( NTS )
```

次に、 composer コマンドを実行すると自動的にダウンロードされる。

```bash
$ composer --version
$ composer
Download composer.phar ...
All settings correct for using Composer
Downloading...

Composer (version 1.6.2) successfully installed to: /Users/hokutoasari/composer.phar
Use it: php ./composer.phar
Composer version 1.6.2 2018-01-05 15:28:41
```

参考資料:

https://github.com/phpbrew/phpbrew/wiki/TroubleShooting