※ 商品のリンクをクリックして何かを購入すると私に少額の報酬が入ることがあります【広告表示】 どうしても、ウノウのCTO、BTOさんのphshを試してみたい!試してみたい!
しかし、どうやらPEARの他にもreadlineを有効にしたPHPでないと動作しないようで暫く足踏みを続けていました。
macにはBSD版readlineのようなlibedit.dylibが入っているにもかかわらずデフォで入っているPHPはreadline(readline_completion_functionとか)が入っていません。MAMPのPHPにも期待をかけるも、CLIとしてうまく動作させられずorz
ちょいと横道にそれて、ずっと懇願していたrhacoのインタラクティブシェルとかで遊んでみたり。
dreamhostにも期待を寄せてみたのですが、やっぱりreadlineのインストール+PHPのインストールをしなければいけない模様。
それだったら、家用のmacbookに入ってるPHPをこんふぃぎゃしちまえと。どうせ家のmacbookはMAMPのPHP以外使わないし。
ということで、 phshを使えるようになるまでのメモ 。Pythonとか入ってるから実は既に環境依存しているかもです。ついでにMAMPにも依存させちゃいます(PEAR入れるの面倒)。問題あったら先にPythonのパッケージ版とMAMPを入れてみてください :)
まずは、 PHP.net からPHP5.2.4のソースコードをダウンロードしました。
基本通りに、やっつけます。
$ tar xjf ./php-5.2.4.tar.bz2
で、つづきも定石通り
$ cd php-5.2.4
$ ./configure --with-libedit
$ make
$ sudo make install
$ /usr/local/bin/php -v
PHP 5.2.4 (cli) (built: Sep 4 2007 21:55:44)
Copyright (c) 1997-2007 The PHP Group
Zend Engine v2.2.0, Copyright (c) 1998-2007 Zend Technologies
PHP自体のインストールは完了ですが、デフォルトのphpは/usr/bin/phpで今回インストールしたものは/usr/local/bin/phpなので注
意してください。デフォルトを変更しても良いのですが、面倒なのでダーティにいきます。
btoさんのphshエントリ から svnのソース表示 をし、ソースをコピーします。
適当な場所に、phsh.phpというファイルを作ってコピーした内容を貼付けます。ついでにphsh.phpに実行権限をつけておくと良いでしょう。
$ touch phsh.php
$ emacs ./phsh.php #内容を貼付ける
$ chmod 755 ./phsh.php
phsh.phpの1行目をダーティーに書き換える。
phsh.php
#!/usr/local/bin/php
PEARをインストールするのが面倒なので、MAMPに入っているPEARにPHPのインクルードパスを通しちゃう。
ini_set('include_path', '/Applications/MAMP/bin/php5/lib/php');
これでphsh.phpが動くはず。あれ?function定義できない?きっと、俺のせいだ。もう少しきちんとさわってみないと。
おまけ 。
readline関連でさまよっているときに見つけたPHPのインタラクティブシェル系。
phpa-norl:readline無しでヒストリ付きのインタラクティブシェル
php -a:実は、PHP5.1以降にはデフォルトでインタラクティブシェルが入っているという話。ただし、readline必須。
btoさんのphshは単にインタラクティブシェルなのではなくて、bash等の代わりにデフォルトシェルとして使えるらしいので別次元なのですが、Pythonの
インタラクティブシェルに慣れているとPHPで動きを確認したいときに抱えることになる「無駄な操作無しに試せる環境が無いストレス」を回避するためだけであれば *
* php -a ** でも良いかもしれません。でも、readline入れるのちょっとめんどい。
そんな私には、やはりどこでも動くrhacoにビルトインになったirhacoが丁度良いのかも。ヒストリは無いけど、function定義とか複数行ブロックには対応しているよ。
irhacoの動画