anyenv+phpenv+php-buildでphp管理

# はじめに
phpenvでphp管理をしたいと思って手を出したはいいものの、いろいろ躓いたことがあったので、メモとして残しておきます。
追記:書いた手順とは別に思い通りにすることができたので一部書き直しました。

2020/03/06 追記:PHP7.4系のインストール対応

# 前提
OS:CentOS 7.5


# anyenvのインストール
gitからもってきます。

```
$ git clone https://github.com/riywo/anyenv ~/.anyenv
```

パスを通します。

```
$ echo 'export PATH=$HOME/.anyenv/bin:$PATH' >> ~/.bash_profile
$ echo 'eval "$(anyenv init -)"' >> ~/.bash_profile
```

シェルのリフレッシュ

```
$ exec $SHELL -l
```

バージョンが新しくなり、`anyenv install --init`を実行しないと使えないようになりました。

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

```
$ anyenv install phpenv
```

anyenvでインストールするとphp-buildも一緒にインストールしてくれます。

シェルのリフレッシュ

```
$ exec $SHELL -l
```

# phpのインストールと設定

インストールする。

```
$ phpenv install 'バージョン'
```

設定する

```
$ phpenv global 'バージョン'

$ phpenv local 'バージョン'
```

# エラー集

## re2c
エラーメッセージ

```
WARNING: You will need re2c 0.13.4 or later if you want to regenerate PHP parsers.
```

対処法
~~バージョンがどうのこうの言ってますが、私の場合ほかに必要なライブラリと一緒にre2cをインストールしたらメッセージは出なくなりました。~~
EPELリポジトリに要求バージョン以上のものがあるみたいなので、まずはEPELをインストールします。

```
$ yum install epel-release
```

```
$ yum install re2c
```

## libxml2
エラーメッセージ

```
error: libxml2 not found. Please check your libxml2 installation.
```

対処法

```
$ yum install libxml2-devel
```

## openssl
エラーメッセージ

```
error: Cannot find OpenSSL's <evp.h>
```

対処法

```
$ yum install openssl-devel
```


## curl
エラーメッセージ

```
 error: cURL version 7.15.5 or later is required to compile php with cURL support
```

対処法

```
$ yum install curl-devel
```

## bzip2
エラーメッセージ

```
error: Please reinstall the BZip2 distribution
```

対処法

```
$ yum install bzip2-devel
```

## libjpeg
エラーメッセージ

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

対処法

```
$ yum install libjpeg-devel
```

## libpng
エラーメッセージ

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

対処法

```
$ yum install libpng-devel
```

## libicu
エラーメッセージ

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

## gcc-c++
エラーメッセージ

```
error : C++ preprocessor "/lib/cpp" fails sanity check
```

対処法

```
$ yum install gcc-c++
```
## readline
エラーメッセージ

```
 error: Please reinstall readline - I cannot find readline.h
```

対処法

```
$ yum install readline-devel
```

## libtidy
エラーメッセージ

```
error: Cannot find libtidy
```

対処法

```
$ yum install libtidy libtidy-devel
```

## libxslt
エラーメッセージ

```
error: xslt-config not found. Please reinstall the libxslt >= 1.1.0 distribution
```

対処法

```
$ yum install libxslt-devel
```

## libzip
エラーメッセージ

```
error: Please reinstall the libzip distribution
```

対処法

```
$ yum install libzip-devel
```

## めっちゃ詰まったところ
エラーメッセージ

```
error: system libzip must be upgraded to version >= 0.11
```

対処法

centos7系で標準リポジトリだとバージョンアップが古いみたいです。
Psychotic Ninjaというリポジトリに要求バージョン以上のものがあるのでそれを使います。

psychoticリポジトリをインストール

```
$ yum install http://packages.psychotic.ninja/7/base/x86_64/RPMS/psychotic-release-1.0.0-1.el7.psychotic.noarch.rpm
```

libzipの0.11以下が入っている場合削除し、その後psychoticからインストールしなおす。

```
$ yum remove libzip libzip-devel

$ yum --enablerepo=psychotic-plus install libzip libzip-devel
```

```
$ yum remove libzip libzip-devel

$ yum --enablerepo=remi,remi-php73 install libzip-devel
```

## oniguruma

PHP7.4系をインストールしようとしたところ下記のエラーメッセージが表示されました。

```
```

```
$ yum install oniguruma oniguruma-devel
```

# 参考
[yumリポジトリ追加リスト 完全版](https://qiita.com/bezeklik/items/9766003c19f9664602fe)
[psychoticリポジトリ](https://centos.pkgs.org/7/psychotic-ninja-plus-x86_64/libzip-0.11.2-6.el7.psychotic.x86_64.rpm.html)
# さいごに
最後のエラーにてこずりましたが、なんとかPHPのインストールに成功しました。
なんでPHPだけこんなにエラーが多いんですかね？(自分が使っている言語で一番インストールに時間がかかりました。)