【CentOS/PHP】phpenvを道入して複数バージョンのPHPを管理する。

phpenv

複数バージョンのPHPを管理するツール。PHPのバージョンをフォルダごとに分けたりとかが出来る。

インストール

下記コマンドを順番に実行。

ここまできたらphpenvコマンドが有効になる。

PHPをインストール

下記コマンドでインストール可能なPHPのバージョンを確認。

こんな感じでリスト表示されるので、この中から使いたいバージョンを決める。
んで例えば5.3.29をインストールしたい場合は下記の通り。

PHPインストール(コンパイル)時のオプションは下記ファイルに記載されているので確認すること。

インストール時のオプションを書き換えたい場合はこれらのファイルを編集すればよい。

オプションを足したい場合は

オプションを削除したい場合は

という記述を各バージョンごとのファイルに追記してやる。
※ここでの注意点として、configure_optionを最終行に追記すると反応しない場合があるらしいので先頭行に追記するのがベター。

たとえばPHP5.3.29をインストールする際に--enable-fpmを追加したければ、 ~/.phpenv/plugins/php-build/share/php-build/definitions/5.3.29configure_option "--enable-fpm"を追記して保存する。

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

まずは下記コマンドでインストール済のPHPバージョンを確認する。

このようにリスト表示される。

そしたら状況に応じて下記コマンドのいずれかを実行。

例えばバージョン5.4.35を現在のディレクトリ以下のみで有効にしたい場合はこんな感じ。

上記を実行すると、そのディレクトリに.php-versionが生成され、その後指定したバージョンが有効になる。

試しにそのフォルダ内でphp -vを実行してやると、ちゃんとバージョンが適用されていることが分かる。

Apacheから特定のPHPバージョンを有効化する

  • まずはhttpd-develパッケージに付属しているapxsの場所を特定する。
    ※下記コマンドを実行すればOK。

  • 次にインストールしたいPHPのバージョンを決め、そのPHPバージョンのコンパイルオプション定義ファイルに次の行を追記する。

5.4.35の場合は~/.phpenv/plugins/php-build/share/php-build/definitions/5.4.35に下記を追記。

apxsへのパスは先ほどwhichコマンドで調べた際のものを指定。

  • 次にPHPのMakefileが出力するlibphp5.soの出力先パスを変更するためにパッチを当てる。

  • 次の内容を記載したファイルをphp-build.patchとして保存。

  • 下記コマンドを実行してパッチを当てる。
  • ビルドが完了すると、下記ディレクトリにlibphp5.soが出力される。
  • 最後にこのlibphp5.sohttpd.confでロードし、サーバーを再起動すれば完了。

※自分の場合はPHPのビルド完了と共に、httpd.conf内に自動で下記が追記されていたが、もし追記されていなければ追記して保存しれやればよい。

違うバージョンを試したい場合も同様にこの手順を繰り返してやればOK。 もしサーバーにもともとインストールしてあるPHPに戻したい場合はLoadModuleの行を消すなりコメントアウトするなりして、サーバーを再起動すればOK。