PHPの複数バージョンを切り替えながら使えるようにする、ナントカenv/ナントカbrewのPHP版について。久しぶりにセットアップしたのでメモ。
昔からブログ記事はいくつかあるのだけど、比較記事があまり見つからないのでまとめておく。
やりたいこと(前提)
一応の注釈だけど、こういう複数環境切り替え系のセットアップツールは以下を前提にしていると思う。
- 開発環境用
- Unix系やMac OSを想定。Windowsお断り
- 初心者向けではない
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でインストール手順をまとめるのも簡単なので、気にならなくなった。