@0tofuの備忘録...

プログラミングとか仕事の話とかFIT3 RS(GK5)のメンテナンス記録等の雑記

anyenv + phpenv + php-buildで複数のPHPのバージョンを管理する

ローカル環境で複数のバージョンをPHPを扱えるように、anyenvとphpenvとphp-buildを導入します。

anyenvの導入

作者様のサイト anyenvという**env系の簡易マネージャを作った - As a Futurist...

githubにINSTALL手順があるので、それに従って導入
github.com

INSTALL


$ git clone https://github.com/riywo/anyenv ~/.anyenv
$ echo 'export PATH="$HOME/.anyenv/bin:$PATH"' >> ~/.zshrc
$ echo 'eval "$(anyenv init -)"' >> ~/.zshrc
$ exec $SHELL -l

phpenvの導入

anyenvの導入が終われば以下コマンドでインストールできます。

INSTALL


$ anyenv install phpenv
$ exec $SHELL -l
...
$ anyenv version
phpenv: system (set by /Users/otofu/.anyenv/envs/phpenv/version)

php-buildの導入

phpenvのプラグインとして導入する為、プラグインディレクトリに展開します。

INSTALL


$ cd ~/.anyenv/envs/phpenv $ git clone https://github.com/CHH/php-build.git plugins/php-build

問題なく終わると、以下のコマンドでインストール可能なphpのバージョンが表示されます。

$ phpenv install
sage: phpenv install [--ini|-i <environment>] VERSION
       phpenv install [--ini|-i <environment>] /path/to/definition

Available versions:
  5.2.17
  5.3.10
  5.3.11
  5.3.12
  5.3.13
...
  7.0.0
  7.0.1
  7.0.2
  7.0snapshot
  master

php 5.6.11をインストール

ドットインストールのPHP入門で使用しているPHPのバージョンが5.6.11なので、同バージョンを導入します。

INSTALL


$ phpenv install 5.6.11
-----------------
|  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: 3.0).
configure: WARNING: You will need re2c 0.13.4 or later if you want to regenerate PHP parsers.
configure: error: mcrypt.h not found. Please reinstall libmcrypt.
-----------------------------------------

順調に進んだと思ったら…libmcryptをインストールしろとエラーが出たので…homebrewからインストールします。

$ brew install libmcrypt
==> Installing dependencies for mcrypt: mhash
==> Installing mcrypt dependency: mhash
==> Downloading https://homebrew.bintray.com/bottles/mhash-0.9.9.9.el_capitan.bottle.tar.gz
######################################################################## 100.0%
==> Pouring mhash-0.9.9.9.el_capitan.bottle.tar.gz
🍺  /usr/local/Cellar/mhash/0.9.9.9: 17 files, 451.5K
==> Installing mcrypt
==> Downloading https://homebrew.bintray.com/bottles/mcrypt-2.6.8.el_capitan.bottle.1.tar.gz
######################################################################## 100.0%
==> Pouring mcrypt-2.6.8.el_capitan.bottle.1.tar.gz
🍺  /usr/local/Cellar/mcrypt/2.6.8: 15 files, 394.6K

再度インストールphpenv install 5.6.11を実行

$ phpenv install 5.6.11
[Compiling]: /var/folders/bz/p53hlm2j05j050pg3xhv_lkm0000gn/T/php-build/source/5.6.11
[xdebug]: Installing version 2.3.3
...
[Success]: Built 5.6.11 successfully.

いくつかwarningは出ていますが、インストール自体は成功

正常にインストールが終了するとphpenv versionsコマンドにインストールしたPHPの一覧が表示されます。
(* は現在使用されているPHPになります。)


$ phpenv versions
* system (set by /Users/otofu/.anyenv/envs/phpenv/version)
  5.6.11

globalで使用するPHPを5.6.11に切り替え

以下のコマンドで使用するバージョンを切り替えます。

$ phpenv global 5.6.11
...
$ phpenv versions
  system
* 5.6.11 (set by /Users/otofu/.anyenv/envs/phpenv/version)
...
$ phpenv rehash
$ php -v
PHP 5.6.11 (cli) (built: Jan 19 2016 21:29:33)

無事に5.6.11に切り替わりました!

お手軽に複数バージョンのPHPを切り替え可能なので便利です。