phpenv
複数バージョンのPHPを管理するツール。PHPのバージョンをフォルダごとに分けたりとかが出来る。
インストール
下記コマンドを順番に実行。
1 2 3 4 5 |
curl https://raw.githubusercontent.com/CHH/phpenv/master/bin/phpenv-install.sh | bash git clone git://github.com/CHH/php-build.git ~/.phpenv/plugins/php-build echo 'export PATH="$HOME/.phpenv/bin:$PATH"' >> ~/.bashrc echo 'eval "$(phpenv init -)"' >> ~/.bashrc exec $SHELL -l |
ここまできたらphpenv
コマンドが有効になる。
PHPをインストール
下記コマンドでインストール可能なPHPのバージョンを確認。
1 |
phpenv install -l |
こんな感じでリスト表示されるので、この中から使いたいバージョンを決める。
んで例えば5.3.29
をインストールしたい場合は下記の通り。
1 |
phpenv install 5.3.29 |
PHPインストール(コンパイル)時のオプションは下記ファイルに記載されているので確認すること。
1 2 3 4 |
# 全バージョン共通のデフォルトオプション ~/.phpenv/plugins/php-build/share/php-build/default_configure_options # 各バージョン毎のオプション ~/.phpenv/plugins/php-build/share/php-build/definitions/5.3.29 |
インストール時のオプションを書き換えたい場合はこれらのファイルを編集すればよい。
オプションを足したい場合は
1 |
configure_option "--enable-fpm" |
オプションを削除したい場合は
1 |
configure_option -D "--enable-fpm" |
という記述を各バージョンごとのファイルに追記してやる。
※ここでの注意点として、configure_option
を最終行に追記すると反応しない場合があるらしいので先頭行に追記するのがベター。
たとえばPHP5.3.29
をインストールする際に--enable-fpm
を追加したければ、
~/.phpenv/plugins/php-build/share/php-build/definitions/5.3.29
にconfigure_option "--enable-fpm"
を追記して保存する。
PHPのバージョンを切り替える
まずは下記コマンドでインストール済のPHPバージョンを確認する。
1 |
phpenv versions |
このようにリスト表示される。
そしたら状況に応じて下記コマンドのいずれかを実行。
1 2 3 4 |
# 全てのディレクトリで有効にする場合 phpenv global [version] # 現在のディレクトリのみで有効にする場合 phpenv local [version] |
例えばバージョン5.4.35
を現在のディレクトリ以下のみで有効にしたい場合はこんな感じ。
1 |
phpenv local 5.4.35 |
上記を実行すると、そのディレクトリに.php-version
が生成され、その後指定したバージョンが有効になる。
試しにそのフォルダ内でphp -v
を実行してやると、ちゃんとバージョンが適用されていることが分かる。
Apacheから特定のPHPバージョンを有効化する
- まずは
httpd-devel
パッケージに付属しているapxs
の場所を特定する。
※下記コマンドを実行すればOK。
1 |
which apxs |
- 次にインストールしたいPHPのバージョンを決め、そのPHPバージョンのコンパイルオプション定義ファイルに次の行を追記する。
5.4.35
の場合は~/.phpenv/plugins/php-build/share/php-build/definitions/5.4.35
に下記を追記。
1 |
configure_option "--with-apxs2" "/usr/bin/apxs" |
apxs
へのパスは先ほどwhich
コマンドで調べた際のものを指定。
次にPHPのMakefileが出力する
libphp5.so
の出力先パスを変更するためにパッチを当てる。次の内容を記載したファイルを
php-build.patch
として保存。
1 2 3 4 5 6 7 8 9 10 11 12 |
@@ -358,6 +358,11 @@ cd "$source_path" { + if which apxs > /dev/null 2>&1; then + _LIBEXECDIR=`apxs -q LIBEXECDIR` + sed -i -e "s|LIBEXECDIR='\$(INSTALL_ROOT)$_LIBEXECDIR'|LIBEXECDIR=$PREFIX/libexec|" $TMP/source/$DEFINITION/Makefile + fi + make make install make clean |
- 下記コマンドを実行してパッチを当てる。
1 |
patch -u ~/.phpenv/plugins/php-build/bin/php-build < php-build.patch |
- ビルドが完了すると、下記ディレクトリに
libphp5.so
が出力される。
1 |
~/.phpenv/versions/[version]/libexec/libphp5.so |
- 最後にこの
libphp5.so
をhttpd.conf
でロードし、サーバーを再起動すれば完了。
※自分の場合はPHPのビルド完了と共に、httpd.conf内に自動で下記が追記されていたが、もし追記されていなければ追記して保存しれやればよい。
1 |
LoadModule php5_module /root/.phpenv/versions/[version]/libexec/libphp5.so |
違うバージョンを試したい場合も同様にこの手順を繰り返してやればOK。
もしサーバーにもともとインストールしてあるPHPに戻したい場合はLoadModule
の行を消すなりコメントアウトするなりして、サーバーを再起動すればOK。