2018/03/12更新

[PHP] PHPBrewで複数のバージョンを使い分ける

このエントリーをはてなブックマークに追加            

こんにちは、@yoheiMuneです。
PHPの開発ではプロジェクトによってPHPのバージョンが違うことがほとんど。ローカルでPHPのバージョンを気軽に切り替えられると開発が捗ります。今日はPHPBrewというツールで、それを実現する方法をブログに書きたいと思います。



目次




PHPのバージョン切り替えツールは乱立状態

今回紹介するPHPBrew以外にもいくつも同様のツールが存在していて、乱立しているようです(参考→phpenvやphpbrewの雑な比較)。参考先の方のオススメとは別ですが、色々と試した結果、PHPBrewが一番使いやすい印象でした。



PHPBrewの使えるOS

PHPBrewは以下の環境で利用可能です。Windowsはサポート対象外です。
  • Mac OS 10.5+
  • Ubuntu
  • Debian
  • REHL / CentOS



PHPBrewのインストール

「依存ライブラリのインストール」と「PHPBrew本体のインストール」の2ステップを行います。


依存ライブラリのインストール

公式ページのRequirementsを確認しながら、環境ごとに必要ライブラリをインストールします。例えばMacでHomeBrewを使う場合には、以下のコマンドでインストールできます。
# MacのHomeBrewで依存ライブラリをインストールする
xcode-select --install
brew install automake autoconf curl pcre bison re2c mhash libtool icu4c gettext jpeg openssl libxml2 mcrypt gmp libevent
brew link icu4c
brew link --force openssl
brew link --force libxml2


PHPBrew本体のインストール

公式のインストール手順も参考に、以下の手順でPHPbrewwをインストールします。
# ダウンロード
curl -L -O https://github.com/phpbrew/phpbrew/raw/master/phpbrew
chmod +x phpbrew

# $PATHにあるディレクトリに移動.
sudo mv phpbrew /usr/local/bin/phpbrew
インストール後に、以下のコマンドが動けばOKです。
$ phpbrew



PHPBrewのセットアップ

PHPBrewを利用するには、インストールに加えてセットアップも必要です。公式のセットアップも参考に、以下のコマンドを実行します。
$ phpbrew init

# vim .bashrc or .zshrc
[[ -e ~/.phpbrew/bashrc ]] && source ~/.phpbrew/bashrc
上記を設定後、ターミナルを再起動すればOKです。



インストール可能なPHPバージョンの確認

インストール可能なPHPバージョンを、調べることができます。
$ phpbrew known

7.2: 7.2.3, 7.2.2, 7.2.1, 7.2.0 ...
7.1: 7.1.15, 7.1.14, 7.1.13, 7.1.12, 7.1.11, 7.1.10, 7.1.9, 7.1.8 ...
7.0: 7.0.28, 7.0.27, 7.0.26, 7.0.25, 7.0.24, 7.0.23, 7.0.22, 7.0.21 ...
5.6: 5.6.34, 5.6.33, 5.6.32, 5.6.31, 5.6.30, 5.6.29, 5.6.28, 5.6.27 ...
5.5: 5.5.38, 5.5.37, 5.5.36, 5.5.35, 5.5.34, 5.5.33, 5.5.32, 5.5.31 ...
5.4: 5.4.45, 5.4.44, 5.4.43, 5.4.42, 5.4.41, 5.4.40, 5.4.39, 5.4.38 ...
--moreオプションをつけると、さらに詳しく表示できます。
$ phpbrew known --more



指定したバージョンのPHPをインストール

installコマンドを使って、任意のバージョンをインストールできます。インストールには10〜20分ほどかかります。
$ phpbrew install 7.2.3 +default
ここで+defaultは、Variantsというものを指定しています。variantはPHP拡張モジュールで、DB接続やマルチバイト処理など、必要なものを一緒にインストールすることができます。
利用可能なvariantsは以下で確認できます。
$ phpbrew variants

Variants:
  all, apxs2, bcmath, bz2, calendar, cgi, cli, ctype, curl, dba, debug, dom,
  dtrace, editline, embed, exif, fileinfo, filter, fpm, ftp, gcov, gd,
  gettext, gmp, hash, iconv, icu, imap, inifile, inline, intl, ipc, ipv6,
  json, kerberos, libgcc, mbregex, mbstring, mcrypt, mhash, mysql, opcache,
  openssl, pcntl, pcre, pdo, pgsql, phar, phpdbg, posix, readline, session,
  soap, sockets, sqlite, static, tidy, tokenizer, wddx, xml, xml_all, xmlrpc,
  zip, zlib, zts


Virtual variants:
  dbs:        sqlite, mysql, pgsql, pdo

  mb:         mbstring, mbregex

  neutral:

  small:      bz2, cli, dom, filter, ipc, json, mbregex, mbstring, pcre, phar,
              posix, readline, xml, curl, openssl

  default:    bcmath, bz2, calendar, cli, ctype, dom, fileinfo, filter, ipc,
              json, mbregex, mbstring, mhash, mcrypt, pcntl, pcre, pdo, phar,
              posix, readline, sockets, tokenizer, xml, curl, openssl, zip

  everything: dba, ipv6, dom, calendar, wddx, static, inifile, inline, cli,
              ftp, filter, gcov, zts, json, hash, exif, mbstring, mbregex,
              libgcc, pdo, posix, embed, sockets, debug, phpdbg, zip, bcmath,
              fileinfo, ctype, cgi, soap, pcntl, phar, session, tokenizer,
              opcache, imap, tidy, kerberos, xmlrpc, fpm, dtrace, pcre, mhash,
              mcrypt, zlib, curl, readline, editline, gd, intl, icu, openssl,
              mysql, sqlite, pgsql, xml, xml_all, gettext, iconv, bz2, ipc, gmp

参考1:CakePHP3を動かすために必要なvariant

CakePHP3を動かすためには、intlmysqlというvariantが必要です。以下のように指定します。
$ phpbrew install 7.2.3 +default +intl +mysql


参考2:インストール済の拡張機能の確認

インストール済の拡張機能は、以下のコマンドで確認可能です。
$ phpbrew ext
ext installext enableなど拡張機能に関するコマンドがいくつか存在します。詳細はこちらの公式ページをご参照ください。


参考3:Macでintlモジュールのインストールに失敗する

Macではintlをインストール時にエラーが発生します。PHPをインストール後に、以下のコマンドでintlが有効化されているかを確認できます。
$ phpbrew ext | grep intl
 [*] intl         1.1.0 
[*]になっていたら有効化されていますが、なっていない場合にはインストールが失敗しています。その場合には、以下の記事を参考に頑張ってインストールします。

PHPBrewに"intl"拡張をインストール



インストール済のPHPバージョンを確認する

listコマンドで一覧を確認できます。
$ phpbrew list



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

バージョン切り替えは、2種類の方法が存在します。
# 一時的に切り替え
$ phpbrew use 7.2.3

# 永続的に切り替える
$ phpbrew switch 7.2.3



参考資料

公式ページのReadMEとWikiが詳しいので、そちらが参考になります。

PHPBrew - Github

PHPBrew - Wiki | Github



最後に

インストールに時間がかかってしまうのが難点ですが、切り替えさえできてしまえば簡単に利用できるので素敵です。

最後になりますが本ブログでは、PHP、フロントエンド、Node.js、Swift、Python、Linux、Java、インフラ、Go言語、機械学習、などの技術トピックを発信をしていきます。「プログラミングで困ったその時の、解決の糸口に!」そんな目標でブログを書き続けています。ぜひ、本ブログのRSSTwitterをフォローして貰えたら嬉しいです ^ ^

最後までご覧頂きましてありがとうございました!





こんな記事もいかがですか?

RSS画像

もしご興味をお持ち頂けましたら、ぜひRSSへの登録をお願い致します。