10
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

phpenv+php-buildとphpbrewの比較

Last updated at Posted at 2015-11-12

手元で任意のバージョンのPHPをビルドして使い分けるプロジェクトとして、phpenv+php-buildとphpbrewの2つが有名かと思います。僕はphpenv+php-build派なんですが、phpbrewを少しだけ触ってみたので、両者の違いをまとめてみます。

phpenv+php-buildの良いところ

  • bashスクリプトで書かれているので多くの環境で前準備なしで動く
  • シェルの補完をサポートしている
    • phpenv install [TAB]で候補が出てくる
  • 最近サブコマンドとしてupdateとuninstallが実装された
    • 気軽さの意味でphpbrewに追いついた感
  • PHPのalphaやbetaやRCのビルドレシピを配っている
    • リリース後1日から2日くらいのうちに降ってくる
  • 最新snapshotのビルドレシピもある
    • 最新機能がすぐ試せる
  • 独自パッチを適用する指定をレシピに書ける
    • 古いPHPのビルドに必要なパッチがphp-buildに含まれている
  • メジャーどころの拡張モジュールは標準で有効
  • XdebugやOPcacheあたりをデフォルトで入れてくる
  • 広く使われている
    • Travis CIやCircleCIなどで複数PHPバージョンを提供するのに使われている

phpenv+php-buildのイマイチなところ

  • phpenvの実装が複数あって、どれを使ったらいいか初見ではわからない
  • CHH/phpenvを使うとrbenvとコンフリクトする人が多い
    • 内部的にrbenvを使っているため
    • うまく.bashrcや.zshrcに記述すればコンフリクトしない気がするけど…
    • 絶対にrbenvとコンフリクトしないよう改造したphpenvもある
  • phpenvをインストールした後、改めてphp-buildをインストールする必要があって面倒
  • コマンドライン指定だけではconfigureオプションの変更ができず、レシピファイルを書き換える必要がある
  • レシピを記述するdefinitionファイルの文法が独特で若干ハードルが高い

phpbrewの良いところ

  • 1コマンドで動くのでインストールが簡単
  • configureオプションの変更がコマンドラインから簡単に出来る
  • メジャーどころの拡張モジュールは標準で有効
  • $HOME/.phpbrew以下のディレクトリ構成がシンプルでわかりやすい
  • シェルの補完をサポートしている
    • phpbrew install [TAB]で候補が出てくる

phpbrewのイマイチなところ

  • phpbrew自体の動作に、自身がビルドしたのとは別のPHPが必要
  • alphaやbetaやRCのビルドレシピを配っていない
  • 最新snapshotのビルドレシピもない
  • XdebugやOPcacheあたりは明示的に入れないと入らない
    • phpbrew install 5.5.5 +opcacheなどとする
    • 最近のPHPならOPcacheをデフォルトで有効にしておいて欲しい
    • PHPバージョンごとにXdebugの適切なバージョンが違うので自分で選ぶのは案外面倒
  • configureオプション違いで同一バージョンを複数共存させたい場合のやり方がわからない

参考

10
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?