当前位置: > Linux发行版 > Debian >

Debian Wheezy安装php readline扩展,支持Boris

时间:2014-10-28 13:01来源:linux.it.net.cn 作者:it

PHP interactive mode boris
REPL(Read-Eval-Print Loop,交互式解释器/交互式编程环境)在程序开发中可以方便的用于调试、测试以及试验某种想法 一些常见语言,如Python、Ruby、Lua都原生的支持REPL。
PHP也内置了REPL功能,在命令行模式下执行:

$ php -a
Interactive shell

php > echo “Hello REPL”;
Hello REPL

不过PHP的交互模式功能比较薄弱,比如错误处理不好,遇到严重错误会退回控制台。执行命令时,不实时输出表达式结果,只有明文实用echo、print等函数时才输出内容。而其他语言的REPL都是实时输出的。
Boris是对PHP的REPL功能的增强版,弥补了PHP交互模式的不足,使其可以跟其他语言的类似功能相媲美。项目地址:https://github.com/d11wtq/boris
Boris依赖以下PHP环境:
PHP >= 5.3
The Readline functions
The PCNTL functions
The POSIX functions
由于依赖POSIX,Windows系统无法使用Boris。

安装PCNTL、POSIX扩展比较简单,一般安装php5时默认已经安装好了。而Readline则因为授权的原因,在官方发布的PHP包中被移除了。如果不安装这个扩展,运行boris会提示以下错误:

PHP Fatal error: Call to undefined function Boris\readline_read_history() in /Users/neil/work/boris/lib/Boris/ReadlineClient.php on line 36
prod03:boris neil$ PHP Fatal error: Uncaught exception ‘RuntimeException’ with message ‘Socket error: failed to write data’ in /Users/neil/work/boris/lib/Boris/EvalWorker.php:118
Stack trace:
#0 /Users/neil/work/boris/lib/Boris/Boris.php(95): Boris\EvalWorker->start()
#1 /Users/neil/work/boris/bin/boris(9): Boris\Boris->start()
#2 {main}
thrown in /Users/neil/work/boris/lib/Boris/EvalWorker.php on line 118

Fatal error: Uncaught exception ‘RuntimeException’ with message ‘Socket error: failed to write data’ in /Users/neil/work/boris/lib/Boris/EvalWorker.php:118

要安装Readline扩展需要使用dotdeb源:

在 /etc/apt/sources.list中添加:
deb http://packages.dotdeb.org wheezy all
deb-src http://packages.dotdeb.org wheezy all
导入GPG key:
# wget http://www.dotdeb.org/dotdeb.gpg
# sudo apt-key add dotdeb.gpg
更新源:
# sudo apt-get update
安装 php5-readline的deb包:
# sudo apt-get install php5-readline

下载安装boris:

curl -L -O https://github.com/d11wtq/boris/releases/download/v1.0.8/boris.phar
chmod +x boris.phar
./boris.phar

如果需要及时获得最新版,建议使用GIT方式下载:

git clone git://github.com/d11wtq/boris.git
cd boris
./bin/boris

(责任编辑:IT)
------分隔线----------------------------