Rubellum fly light

ほぼPHP日記

PHPのバージョン管理はphpbrewが使いやすいです

PHPのバージョンを管理するソフトウェアはphpbrewが一番使いやすいです。
なので、みなさんもphpbrewを使いましょう。

c9s/phpbrew · GitHub

インストール方法や使い方はREADMEを見るのが一番いいです。

インストールメモ

以下、自分向けのメモ。

phpbrewのインストール。

$ curl -O https://raw.github.com/c9s/phpbrew/master/phpbrew
$ chmod +x phpbrew
$ sudo cp phpbrew /usr/bin/phpbrew

初期設定コマンド。

$ phpbrew init

.bashrcか.zshrcに以下のコマンドを追記する(端末起動時にphpbrewの設定ファイルを読み込むようにする)。

source ~/.phpbrew/bashrc

Homebrewを使ってる場合は、以下のコマンドを叩くといいらしい。
(以前はする必要なかった気がするが、最新バージョンでは必要っぽい)
(これに関してはぶっちゃけ何してるかよく知らない)

$ phpbrew lookup-prefix homebrew

PHPのインストールはこんな感じでできる。

$ phpbrew install 5.4.0 +default

「+default」の部分はvariantsといって、PHPのconfigureオプション(インストール時に指定する拡張モジュールなど)を指定するもの。

variantsは以下のコマンドで詳細を確認できる。

$ phpbrew variants
Variants: 
  all, apxs2, bcmath, bz2, calendar, cgi, cli, ctype, dba, debug, dom, embed, 
  exif, fileinfo, filter, fpm, ftp, gcov, gd, gettext, hash, iconv, icu, 
  imap, intl, ipc, ipv6, json, kerberos, mbregex, mbstring, mcrypt, mhash, 
  mysql, openssl, pcntl, pcre, pdo, pgsql, phar, posix, readline, session, 
  soap, sockets, sqlite, tidy, tokenizer, xml, xml_all, xmlrpc, zip, zlib


Virtual variants: 
  dbs: sqlite, mysql, pgsql, pdo
  mb: mbstring, mbregex
  default: bcmath, bz2, calendar, cli, ctype, dom, fileinfo, filter, ipc, 
  json, mbregex, mbstring, mhash, mhash, pcntl, pcre, pdo, phar, posix, 
  readline, sockets, tokenizer, xml_all, zip, bz2

「+default」を指定すると、

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

がインストールされることがわかる。
こだわりがないなら+defaultは付けた方がいい。

インストールできるPHPのバージョンは、

$ phpbrew known

で確認できる。

今のところPHP 5.5が最新系。
こだわりがないなら一番新しいのでいいと思う。

自分は以下のようなオプションでインストールしてる。

$ phpbrew install 5.5.8 +default +mysql +apxs2 +openssl

(追記:20140115:OpenSSLのオプション追加した)

+aspxはapacheを使用するときに指定する(以下、若干うろ覚え)。

Macだと/usr/libexec/apache2に書き込み権限がないと警告かエラーが出たと思う。
いろいろ面倒なので自分は/usr/libexec/apache2のパーミッションを777に。
(phpbrewを使うような環境はローカルの開発環境だと思うし)

$ sudo chmod 777 usr/libexec/apache2

またapache2の設定ファイル(Macだと「/etc/apache2/httpd.conf」)にも書き込み権限がないと警告orエラーが出た気がする。
これはphpbrewが生成したPHPのモジュールの読み込み設定を追加しようとするため。
書き込み権限追加するか、それが嫌なら自分で設定を書く(自分はさくっと書いちゃってます)。
既存の設定をコメントアウトし、同じようなフォーマットでphpbrewでインストールしたモジュールを読み込むようにする。

#LoadModule php5_module libexec/apache2/libphp5.so
LoadModule php5_module libexec/apache2/libphp5.5.8.so

なんかバッドノウハウ感あるので、良い方法があったら誰か教えて下さい。

PHPのバージョン変更

使用するPHPを指定する場合は、以下のコマンドを実行します。

$ phpbrew use 5.5.8     # 一時的に5.5.8に変更する(端末を再起動したら元のバージョンに戻る)
$ phpbrew switch 5.5.8  # デフォルトで使用するバージョンを5.5.8に変更する(端末を再起動しても5.5.8のまま)

まとめ

phpbrew便利。