phshとかphpのインタラクティブシェル

2007年09月04日(火) 22:23

どうしても、ウノウの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行目をダーティーに書き換える。

#!/usr/local/bin/php


PEARをインストールするのが面倒なので、MAMPに入っているPEARにPHPのインクルードパスを通しちゃう。<?phpの次の行に無理矢理追加。

ini_set('include_path', '/Applications/MAMP/bin/php5/lib/php');


これでphsh.phpが動くはず。あれ?function定義できない?きっと、俺のせいだ。もう少しきちんとさわってみないと。

phsh動いたー
phsh動いたー posted by (C)everes


おまけ。readline関連でさまよっているときに見つけたPHPのインタラクティブシェル系。


phpa-norl:readline無しでヒストリ付きのインタラクティブシェル


php -a:実は、PHP5.1以降にはデフォルトでインタラクティブシェルが入っているという話。ただし、readline必須。


btoさんのphshは単にインタラクティブシェルなのではなくて、bash等の代わりにデフォルトシェルとして使えるらしいので別次元なのですが、Pythonのインタラクティブシェルに慣れているとPHPで動きを確認したいときに抱えることになる「無駄な操作無しに試せる環境が無いストレス」を回避するためだけであれば php -a でも良いかもしれません。でも、readline入れるのちょっとめんどい。


そんな私には、やはりどこでも動くrhacoにビルトインになったirhacoが丁度良いのかも。ヒストリは無いけど、function定義とか複数行ブロックには対応しているよ。

irhacoの動画


 
ponybadge

Powered by

Feedbacks

Tweets

Tags

Calendar