phpenvを使って最新版PHPを利用する
2018/11/26
Table of Contents
anyenv
anyenvは知ってる方多いのでは無いでしょうか?
様々な言語の色々なバージョンを利用できるように管理してくれるツールです。
gitでインストールします。
$ git clone https://github.com/riywo/anyenv ~/.anyenv
$ vim ~/.bash\_profile ※bash利用時
最後に以下を追記
export PATH="$HOME/.anyenv/bin:$PATH"
eval "$(anyenv init -)"
$ source ~/.bash\_profile ※bash利用時
$ anyenv install phpenv
〜省略〜
Install phpenv succeeded!
Please reload your profile (exec $SHELL -l) or open a new session.
$ exec $SHELL -l
インストール出来るバージョン確認
$ phpenv install -l
〜省略〜
7.2.12
7.2snapshot
7.3.0alpha1
7.3.0alpha2
7.3.0alpha3
7.3.0alpha4
7.3.0beta1
7.3.0beta2
7.3.0beta3
7.3.0RC1
7.3.0RC2
7.3.0RC3
7.3.0RC4
7.3.0RC5
7.3snapshot
master
この記事を書いてる時点で7.3.0RC6
が出てるはずなので、微妙に遅れているようですね。
早速インストールしたいのですが、デフォルトではCPUを一つしか使用せず時間がかかります。
CPUパワーをフルに発揮する用に設定を追加します。
PHP\_BUILD\_EXTRA\_MAKE\_ARGUMENTS=-j8
j8
の部分は使用しているPCのマシンコア数に合わせて調整してください。
上記だと8CPU利用します。
早速インストールしますが、わりといろんなものが足りないことが多いです。
$ phpenv install 7.3.0RC5
〜省略〜
-----------------
| 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: none, min: 204, excluded: ).
configure: WARNING: You will need re2c 0.13.4 or later if you want to regenerate PHP parsers.
configure: error: libxml2 not found. Please check your libxml2 installation.
-----------------------------------------
Amazon Linux2の場合、
わりと雑に言うとXxxxX not found
のXxxxX-develを入れれば解決します。
上記だとlibxml2-devel
を入れれば良いです。 ※libXxxxX-develの場合も有り
gcc-c++
ちょっと特殊ですが、エラーメッセージから該当パッケージを探します。
以下コマンドで該当のパッケージを探します。
sudo yum search XxxxX
またAmazon Linux2
ではlibtidy
が見つかりません。
makeすれば良いんですが、なんとか Y/n
な感じで終わらせたいので、
amazon-linux-extras
を使ってepel
を有効化します。
$ amazon-linux-extras
0 ansible2 available [=2.4.2 =2.4.6]
2 httpd\_modules available [=1.0]
3 memcached1.5 available [=1.5.1]
4 nginx1.12 available [=1.12.2]
5 postgresql9.6 available [=9.6.6 =9.6.8]
6 postgresql10 available [=10]
8 redis4.0 available [=4.0.5 =4.0.10]
9 R3.4 available [=3.4.3]
10 rust1 available \
[=1.22.1 =1.26.0 =1.26.1 =1.27.2]
11 vim available [=8.0]
12 golang1.9 available [=1.9.2]
13 ruby2.4 available [=2.4.2 =2.4.4]
15 php7.2 available \
[=7.2.0 =7.2.4 =7.2.5 =7.2.8 =7.2.11]
16 php7.1 available [=7.1.22]
17 lamp-mariadb10.2-php7.2 available \
[=10.2.10\_7.2.0 =10.2.10\_7.2.4 =10.2.10\_7.2.5
=10.2.10\_7.2.8 =10.2.10\_7.2.11]
18 libreoffice available [=5.0.6.2\_15 =5.3.6.1]
19 gimp available [=2.8.22]
20 docker available \
[=17.12.1 =18.03.1 =18.06.1]
21 mate-desktop1.x available [=1.19.0 =1.20.0]
22 GraphicsMagick1.3 available [=1.3.29]
23 tomcat8.5 available [=8.5.31 =8.5.32]
24 epel available [=7.11]
25 testing available [=1.0]
26 ecs available [=stable]
27 corretto8 available [=1.8.0\_192]
$ amazon-linux-extras install epel
上記を繰り返すと以下のパッケージを入れれば良いことがわかります。
sudo yum install libxml2-devel openssl-devel bzip2-devel libcurl-devel libjpeg-turbo-devel libpng-devel libicu-devel gcc-c++ readline-devel libtidy-devel libxslt-devel libzip-devel libzip-devel
$ phpenv install 7.3.0RC5
$ phpenv install 7.3.0RC5
[Info]: Loaded extension plugin
[Info]: Loaded apc Plugin.
[Info]: Loaded composer Plugin.
[Info]: Loaded github Plugin.
[Info]: Loaded uprofiler Plugin.
[Info]: Loaded xdebug Plugin.
[Info]: Loaded xhprof Plugin.
[Info]: Loaded zendopcache Plugin.
[Info]: php.ini-production gets used as php.ini
[Info]: Building 7.3.0RC5 into /home/vagrant/.anyenv/envs/phpenv/versions/7.3.0RC5
[Skipping]: Already downloaded and extracted https://downloads.php.net/~cmb/php-7.3.0RC5.tar.bz2
[Preparing]: /tmp/php-build/source/7.3.0RC5
[Compiling]: /tmp/php-build/source/7.3.0RC5
[Info]: Enabling Opcache...
[Info]: Done
[Info]: The Log File is not empty, but the Build did not fail. Maybe just warnings got logged. You can review the log in /tmp/php-build.7.3.0RC5.20181125232025.log or rebuild with '--verbose' option
[Success]: Built 7.3.0RC5 successfully.
warningがでてるようですがインストール出来ました。
最後に7.3.0RC5
を使う宣言をして利用できます。
$ phpenv global 7.3.0RC5
わりと色んな物が入ってないので、configure_optionを変更したくなると思います。
全てのPHPに反映したいconfigure_option
はdefault_configure_optionsに書きます。
$ vim ~/.anyenv/envs/phpenv/plugins/php-build/share/php-build/default\_configure\_options
以下の用に追記
--with-mysql
--with-pdo-mysql
個別のPHPに反映したいconfigure_option
はdefinitionsに書きます。
$ vim ~/.anyenv/envs/phpenv/plugins/php-build/share/php-build/definitions/7.3.0RC5
以下の用に追記
configure\_option "--with-mysql" "--with-pdo-mysql"
これで様々なPHPで検証出来るようになりますね!