バージョンの異なる実行環境を切り替えたり、インストールしたりと管理できるツールとしてはrvm(ruby)、perlbrew(perl)、nodebrew(node.js)と言ったものが有名所ですが、PHPにもphpbrewというツールがある事を知ったので使ってみました。
インストール
環境はMac OS X Lionです。
元々、入っているPHPのバージョンは5.3.8でPHP4.4.9はコンパイルして入れたものが入っています。
[suusuke@macbook ~]$ php -v PHP 5.3.8 with Suhosin-Patch (cli) (built: Nov 15 2011 15:33:15) Copyright (c) 1997-2011 The PHP Group Zend Engine v2.3.0, Copyright (c) 1998-2011 Zend Technologies [suusuke@macbook ~]$ php4 -v PHP 4.4.9 (cli) (built: Mar 26 2011 10:08:22) Copyright (c) 1997-2008 The PHP Group Zend Engine v1.3.0, Copyright (c) 1998-2004 Zend Technologies
phpbrewインストール
c9s/phpbrew · GitHub に書いてある手順どおりインストールします。
[suusuke@macbook ~]$ sudo pear channel-discover pear.corneltek.com Password: Adding Channel "pear.corneltek.com" succeeded Discovery of channel "pear.corneltek.com" succeeded [suusuke@macbook ~]$ sudo pear install -a -f corneltek/PhpBrew Password: downloading PhpBrew-1.0.2.tgz ... Starting to download PhpBrew-1.0.2.tgz (43,519 bytes) ............done: 43,519 bytes downloading Universal-1.0.2.tgz ... Starting to download Universal-1.0.2.tgz (10,805 bytes) ...done: 10,805 bytes downloading CLIFramework-1.0.6.tgz ... Starting to download CLIFramework-1.0.6.tgz (8,432 bytes) ...done: 8,432 bytes downloading GetOptionKit-1.0.0.tgz ... Starting to download GetOptionKit-1.0.0.tgz (10,801 bytes) ...done: 10,801 bytes install ok: channel://pear.corneltek.com/Universal-1.0.2 install ok: channel://pear.corneltek.com/GetOptionKit-1.0.0 install ok: channel://pear.corneltek.com/CLIFramework-1.0.6 install ok: channel://pear.corneltek.com/PhpBrew-1.0.2
[suusuke@macbook ~]$ cd ~/ [suusuke@macbook ~]$ git clone git@github.com:c9s/phpbrew.git Cloning into phpbrew... Identity added: /Users/suusuke/ssh/github/id_rsa (/Users/suusuke/ssh/github/id_rsa) remote: Counting objects: 1130, done. remote: Compressing objects: 100% (436/436), done. remote: Total 1130 (delta 676), reused 1014 (delta 560) Receiving objects: 100% (1130/1130), 926.93 KiB | 244 KiB/s, done. Resolving deltas: 100% (676/676), done. [suusuke@macbook ~]$ cd phpbrew [suusuke@macbook phpbrew]$ sudo pear install -f package.xml install ok: channel://pear.corneltek.com/PhpBrew-1.1.1
[suusuke@macbook ~]$ ./phpbrew init Phpbrew environment is initialized, required directories are created under ~/.phpbrew Paste the following line(s) to the end of your ~/.bashrc and start a new shell, phpbrew should be up and fully functional from there: source ~/.phpbrew/bashrc For further instructions, simply run `phpbrew` to see the help message. Enjoy phpbrew at $HOME!! [suusuke@macbook ~]$ source ~/.phpbrew/bashrc
インストールできるバージョンの確認
[suusuke@macbook ~]$ ./phpbrew/phpbrew known Available stable versions: php-5.4.0 php-5.3.10 php-5.3.9 php-5.3.8 php-5.3.7 php-5.3.2 php-5.3.1 Available svn versions: php-svn-head php-svn-5.3 php-svn-5.4 Available versions from PhpStas: php-5.4.0 php-5.4.0RC1 php-5.4.0RC2 php-5.4.0RC3 php-5.4.0RC4 php-5.4.0RC5 php-5.4.0RC6 php-5.4.0RC7 php-5.4.0RC8 php-5.4.0alpha1 php-5.4.0alpha2 php-5.4.0alpha3 php-5.4.0beta1 php-5.4.0beta2
インストールできるオプションの確認
[suusuke@macbook ~]$ ./phpbrew/phpbrew variants Variants pdo pear gd openssl mysql sqlite pgsql cli ftp sockets apxs2 debug cgi soap pcntl intl imap kerberos Example: phpbrew install php-5.3.10 +mysql +pdo phpbrew install php-5.3.10 +mysql +pdo +apxs2 phpbrew install php-5.3.10 +mysql +pdo +apxs2=/usr/bin/apxs2
PHP5.4.0をインストールして使ってみる
[suusuke@macbook ~]$ ./phpbrew/phpbrew -d install --no-test php-5.4.0 ===> Downloading http://www.php.net/distributions/php-5.4.0.tar.bz2 ######################################################################## 100.0% ===> Extracting... ===> Configuring php-5.4.0... ./configure '--prefix=/Users/suusuke/.phpbrew/php/php-5.4.0' '--with-config-file-path=/Users/suusuke/.phpbrew/php/php-5.4.0/etc' '--with-config-file-scan-dir=/Users/suusuke/.phpbrew/php/php-5.4.0/var/db' '--with-pear=/Users/suusuke/.phpbrew/php/php-5.4.0/lib/php' '--disable-all' '--enable-bcmath' '--enable-ctype' '--enable-dom' '--enable-exif' '--enable-fileinfo' '--enable-filter' '--enable-hash' '--enable-fpm' '--with-xsl' '--with-tidy' '--with-xmlrpc' '--enable-json' '--enable-libxml' '--enable-mbregex' '--enable-mbstring' '--enable-phar' '--enable-session' '--enable-short-tags' '--enable-simplexml' '--enable-sockets' '--enable-tokenizer' '--enable-xml' '--enable-xmlreader' '--enable-xmlwriter' '--enable-zip' '--with-bz2' '--with-mhash' '--with-pcre-regex' '--with-zlib=/opt/local' '--with-libxml-dir' '--with-curl=/opt/local' '--with-gettext=/opt/local' '--with-libedit=/usr' '--with-readline' '--enable-pdo' '--enable-cli' configure: WARNING: You will need re2c 0.13.4 or later if you want to regenerate PHP parsers. configure: error: bz2 module requires libbz2 >= 1.0.0 ===> Building php-5.4.0... make: *** No targets specified and no makefile found. Stop. Skip tests Build finished: 0 minutes. ===> Installing... ---> Copying php.ini-development Source directory: Done! To use the newly built PHP, try the line(s) below: $ phpbrew use php-5.4.0 Or you can use switch command to switch your default php version to php-5.4.0: $ phpbrew switch php-5.4.0
あれ!?
configure: error: bz2 module requires libbz2 >= 1.0.0
configureでエラーになる。。。
with-bz2オプションでlibbz2のパス指定すればいいのかなと思って、パラメータで指定してみたがnot definedとなって、パラメータでは指定できないみたい。。。
[suusuke@macbook ~]$ phpbrew -d install php-5.4.0 --with-bz2=/usr/lib/libbz2.dylib ===> Downloading http://www.php.net/distributions/php-5.4.0.tar.bz2 ######################################################################## 100.0% ===> Extracting... Variant --with-bz2 is not defined.
わからない。。。I don’t know…
追記
libbz2がインストールされてないんじゃないの?とコメント頂いたので、調べてみる。
[suusuke@macbook ~]$ ll /usr/lib/libbz2.dylib lrwxr-xr-x 1 root wheel 16 9 20 02:36 /usr/lib/libbz2.dylib -> libbz2.1.0.dylib
あるよね。。。
ホントに!?
macportsで調べる
[suusuke@macbook ~]$ sudo port installed Password: Warning: port definitions are more than two weeks old, consider using selfupdate The following ports are currently installed: apache2 @2.2.10_0+darwin_9 (active) ...
macportsには無かった、取り合えずmacportsが古いといっているのでselfupdateしてmacportsで入れてみる。
[suusuke@macbook ~]$ sudo port -d selfupdate [suusuke@macbook ~]$ sudo port upgrade outdated [suusuke@macbook ~]$ sudo port upgrade installed
※途中port upgradeでmysqlのアップデートに失敗してmysqlがcleanされてしまい、コンパイルするのに一日費やしてしまった。。。
[suusuke@macbook ~]$ sudo port clean mysql5-devel [suusuke@macbook ~]$ sudo port install mysql5-devel configure.compiler=llvm-gcc-4.2
コンパイラーをllvm-gcc-4.2するとコンパイルに成功した。
macports自信とライブラリをアップデートしたら、問題なくphpbrew -d install php-5.4.0に成功した。
bz2関連のライブラリが古かったのだろうか。。。。