phpenvやphpbrewの雑な比較

  • 27
    いいね
  • 1
    コメント
この記事は最終更新日から1年以上が経過しています。

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でインストール手順をまとめるのも簡単なので、気にならなくなった。