はい。こんにちは。なんとなく、水戸市からお送りします。
川原です。
php-build+phpenv という環境を揃えれば、
PHPの version を管理できること (複数バージョンを切り替えて使うなど)
が、可能なのはしっているけど、
そのために、いくつも git clone するのが嫌なのと、
php-build がいろいろとイケてなかったので、せっかくなので自分なりの
管理ツールを作ったよー。
その名も、php-nabe である。
https://github.com/kawahara/php-nabe
作り始めた時、鍋食いたかったのでこの名前にした。
無理やり、意味付けしろと言われたら
maNAgement a Brilliant Environment
とか、どうよ。超無理矢理。
使い方
インストール
ホームディレクトリへのインストール例。
$ mkdir ~/.php-nabe
$ cd ~/.php-nabe
$ git clone https://github.com/kawahara/php-nabe
$ export PATH=$HOME/.php-nabe/php-nabe/bin:$PATH
PHP5.4.1インストールの例 (Debian)
これだけ?
$ sudo apt-get install build-essential autoconf autobuild bison libtool flex re2c
$ php-nabe install 5.4.1
$ php-nabe use 5.4.1
$ php -v
PHP 5.4.1 (cli) (built: Apr 29 2012 13:14:03)
Copyright (c) 1997-2012 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2012 Zend Technologies
目標
PHPをビルドするために、phpを必要としない。
この手の、PHPのバージョン管理ツールは、実に多種多様あって、phpbrew なんていうのもあって、機能面ではなかなかイケているのだが、残念なことに php をビルドするために、php が必要。 必要な、ライブラリだけそろえて、ササッとビルドしてしまえるようにしたい。
というわけで、php-nabe自体は bash で動くようにした。あと動作に必要な物は、 git など。 (理由は後述)
簡単なExtensionのインストール
PHPのかったるい Extension のインストールを楽にしたい。
以下のように、pecl とか、 php-src/ext かを意識しないでも php extension のビルドができるようにした。ついでに、 ext-install が終わると、勝手に extension名.ini に extension=extension名 をやってくれる、便利かもしれない機能をつけた。
これは、後で設定ファイル追加しないオプションをつけておく。
$ php-nabe ext-install mbstring
$ php-nabe ext-install mongo
mysqlnd に関しては、デフォルトで組み込まれるが、 php-nabe install 時に、 –disable-mysqlnd オプションを付加することにより、組み込まないことも可能。
インストール可能バージョン管理リストを持たない
pvm を始めとする、多くの PHP バージョン管理システムでは、スクリプト中にバージョン情報についてのリストを持っている。これでは、phpのバージョンが新しく出るたびに更新しなければならない。(のは僕が面倒くさい。)
ということで、php-nabe の大方針として、 git を使うことにして、タグからソースコードを参照するようにしている。
composerとの統合
まだできてないけど、今後やりたい。
composer とは、PHP製ライブラリの依存管理をやってのける便利なものである。オートロードを自動的になんとかしてくれたりと、モダンなPHPをやっている人にとっては至りつくせりなプロダクトである。Symfony2.1 ではこれを採用するとのこと。まだまだ、開発段階でかなり動きが激しいが、十分に活用することができる。
既に、
$ php-nabe composer-install
をすると、composer が手に入るようにはしているが、今後は、 package.json 中に書いてある Extension を php-nabe によって、extension ごと自動的な依存管理をできるようにしたい。これは、PHPUnit のテスト実施において、余計な Extension を追加しない状態でテストしたい場合などに、非常に有効な気がしている。
—
というわけで、すでに自分の環境については、これで構築してみたよー。
まだまだ、すっからかんな状態なので、鍋に具を投入したい方は、Pull Request をいただければ、
奉行である私が投入します。