PHP
phpenv
phpbrew

phpenvやphpbrewの雑な比較

More than 3 years have passed since last update.

PHPの複数バージョンを切り替えながら使えるようにする、ナントカenv/ナントカbrewのPHP版について。久しぶりにセットアップしたのでメモ。

昔からブログ記事はいくつかあるのだけど、比較記事があまり見つからないのでまとめておく。


やりたいこと(前提)

一応の注釈だけど、こういう複数環境切り替え系のセットアップツールは以下を前提にしていると思う。


  1. 開発環境用

  2. Unix系やMac OSを想定。Windowsお断り

  3. 初心者向けではない

php-buildなどでのインストールはビルドを伴うので、開発用ツールのセットアップが必要だし、インストールの時間もかかるし、何よりハマりやすい。普通は本番環境やデプロイで使うものではない。

また、大体のツールはgmakeやautotoolsの存在を前提にしているので、Windowsで動かない。Cygwinとか頑張れば可能だろうけど、、たぶんツール作者はWindowsユーザーのことを考えていない。

PHPを勉強したいだけの初心者は、素直に最新版のPHPを普通に使っておけば困らないと思う。あとでphpenvに移すのも難しくないし。

それから、私の場合はこんな前提も追加になる。


  • apacheやphp-fpmは必要ない

  • PHPに依存しないでPHPがインストールできる方がよい

開発程度であればPHPのビルトインウェブサーバーで可能だし、そもそもapacheを経由するテストならちゃんとテスト環境を作るはずなので、そこはphp-build等でビルドするのではなく、パッケージ版のPHPを使ってテストするべきだと思う。


雑な比較(2015年5月)

これ系統のツールは乱立していて、どれがデファクトと言うわけでもない。

しかも「phpenv」を名乗っているものが複数あって、これまたややこしさに拍車をかけている。

名前
特徴

CHH/phpenv
rbenvにパッチをあててPHP用に修正するただのスクリプト
ビルド機能はないので、通常php-buildをプラグインとして併せて使う。

Travis-CIでも使われている

php-build/php-build

phpをビルドするbashスクリプト。phpenvのプラグインとしても、これ単独でも使える。

旧リポジトリ: github.com/CHH/php-build

laprasdrum/phpenv
最初からrbenvにCHH/phpenvのパッチをあてた状態にして、git cloneするだけでセットアップ完了できるようにしたもの。riywo/anyenvで採用されているが、更新が止まっている。

phpenv/phpenv
CHH/phpenvとは別物で、rbenvからのフォークのようだが、2年前から更新が止まっている

phpbrew/phpbrew
ビルド機能も付属し、extensionのインストールも細かく指定できて高機能。しかしPHPに依存しているので、ゼロからPHPをインストールするためには使えない。

旧リポジトリ: github.com/c9s/phpbrew

virtphp/virtphp
pythonのvirtualenvを模したモノ、と説明にあり、PHPに依存する。php-buildと連携することもできるらしい。

使ったことがないので詳しく語れない。

kawahara/php-nabe
単独でphp-build+phpenv相当の機能を有するbashスクリプト。よさげなんだけど、phpenvで満足して使わなくなってしまった…


結局どれを使えばいいの?

まあ、好きなのを使えばいいと思うんだけど、個人的にはTravisが採用している安心感から、CHH/phpenv+php-buildに落ち着いた。php-buildは「CHH/php-build」から「php-build/php-build」にリポジトリが移転しているので、そこだけ気を付ければ先人たちの記事を参考にインストールできると思う。

phpenv+php-buildの微妙なところは、コマンドが分かれているので初回セットアップが面倒な点だけど、最近はAnsibleやChefでインストール手順をまとめるのも簡単なので、気にならなくなった。