Born Too Late

Yuya's old tech blog.

phpenv で複数の PHP 環境を管理する

2011-10-23 17:01:21

phpenv とは

phpenv

CHH/phpenv - GitHub

複数のバージョンの PHP を管理し, コマンドで簡単に切り替えるためのものです.
Ruby でいう rbenvRVM, Perl でいうところの perlbrew にあたるものです.

なお, phpenv の中身は rbenv を流用することで動いています.

インストール

まず, 以下のコマンドでインストールスクリプトを実行します.

$ curl https://raw.github.com/CHH/phpenv/master/install.sh | sh

中では rbenv を git clone していたりするので, Git をインストールしている必要があります.

上記コマンドが成功したら, ~/.bashrc もしくは zsh 使いなら ~/.zshrc に以下のコマンドを追記します.

あとはいま編集したファイルを再度読み込み直すことでインストールは完了です.

# bash の場合
$ source ~/.bashrc

# zsh の場合
$ source ~/.zshrc
# phpenv
export PATH=$HOME/.phpenv/bin:$PATH
eval "$(phpenv init -)"

rbenv をインストールしている場合

先にも書きましたが, phpenv は rbenv を利用した作りになっています.
その関係もあって, PATH の設定は rbenv が phpenv よりも先になっていないと, 正常に動作しません.
~/.bashrc や ~/.zshrc の設定は, 例えば以下のようにする必要があるので注意が必要です.

# rbenv & phpenv
export PATH=$HOME/.rbenv/bin:$HOME/.phpenv/bin:$PATH
eval "$(rbenv init -)"
eval "$(phpenv init -)"

PHP のインストール

phpenv は PHP の環境を管理するためのものであって, RVM や perlbrew のようにインストールするための機能はありません.
その点は rbenv も同様です.

rbenv では ruby-build を使って Ruby をインストールしますが, phpenv では php-build というツールを使うことができます.

php-build のインストールについては以下の記事を参考にしてください.

php-build で PHP 5.4.0 beta1 をビルドする

以下は php-build のインストールを済ませた, という前提で進めます.

phpenv で管理できるようにインストールするには, ~/.phpenv/versions ディレクトリ内にサブディレクトリを作って, それぞれのバージョンの PHP をインストールする必要があるので, 以下のようにします.

$ php-build 5.4.0beta2 ~/.phpenv/versions/5.4.0beta2

インストールが完了すれば phpenv の管理下に置かれることになります.

$ phpenv versions
  5.4.0beta1
* 5.4.0beta2 (set by /home/yuya/.phpenv/version)

使用する PHP のバージョンを切り替える

以下のようなのコマンドで, インストール済みの PHP のバージョンを切り替えることができます.

$ phpenv global 5.4.0beta2

その他, 使い方は基本的に rbenv と同様なので, そちらを参考にしてください.

sstephenson/rbenv - GitHub

phpenv と php-build の連携

php-build でのビルドでも充分に簡単ですが, せっかくなので phpenv と連携させてもっと簡単にしてみましょう.
以下のようなコマンドだけで好きなバージョンの PHP をビルドし, phpenv の管理下にインストールできるようにします.

$ phpenv install 5.4.0beta2

rbenv でも ruby-build と連携することで rbenv install というサブコマンドを利用することができるようになります.
そこで, rbenv install するためのスクリプト rbenv-install を流用して, こんなものを用意してみました.

このスクリプトを ~/.phpenv/libexec/rbenv-install として保存するだけでインストールは完了です.
これで先のような phpenv install サブコマンドが使えるようになっています.