Top View


Author shiro seike / せいけ しろう / 清家 史郎

phpenvを使って最新版PHPを利用する

2018/11/26

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で検証出来るようになりますね!

shiro seike / せいけ しろう / 清家 史郎

shiro seike / せいけ しろう / 清家 史郎

Twitter X

Company:Fusic CO., LTD. Slides:slide.seike460.com blog:blog.seike460.com Program Language:PHP , Go Interest:Full Serverless Architecture