当我在Debian Wheezy上安装php5-cli时(当前正在测试),由于缺少readline支持(错误341868),交互式提示非常不可用。安装链接到libreadline的版本的最简单方法是什么(用于可用的行编辑)?
当我在Debian Wheezy上安装php5-cli时(当前正在测试),由于缺少readline支持(错误341868),交互式提示非常不可用。安装链接到libreadline的版本的最简单方法是什么(用于可用的行编辑)?
Answers:
使用Dotdeb Debian稳定软件包。尽管文档中没有对此进行说明,但是稳定的软件包目前可以在Wheezy / testing中正常工作。按照说明进行操作后,请执行以下操作:
apt-get install php5-cli
作为根。
php5-readline
可在jessie和sid的主存档中找到。并且您不需要php5-cli
from dotdeb。
除了Gilles建议重新编译完整的PHP软件包的答案之外,您还可以等待PHP 5.4。在5.4中,我重新构造了readline功能,所有必需的部件都在readline模块中,因此您可以独立构建它。
$ wget ...php-5.4.0.tar.bz2
$ tar xjf php-5.4.0.tar.bz2
$ cd php-5.4.0/ext/readline
$ phpize && ./configure && make
然后您将得到一个modules/readline.so
可以从php.ini加载的文件(make install
将其移至extension_dir
)
或者,分发者可以运送readline模块(可能与libedit链接,而不是readline),并且可以使用交互模式。
所有这些现在对您没有帮助(因为PHP 5.4。还没有发布),但可能会帮助其他人稍后找到此问题。
我的博客上有更多详细信息:http : //schlueters.de/blog/archives/133-Now-in-trunk-Improved-interactive-shell.html
编辑:实际上,博客文章早于此更改,但可能仍然很有趣。在错误报告#53878中提供了一些信息,但是也没有太多信息...发布后http://php.net/commandline.interactive应该有更多信息。
安装rlwrap
并运行rlwrap php5
。Rlwrap是通用的readline包装器,它为任何read-eval-print循环提供命令行版本和历史记录。由于它是一个通用包装器,因此您不会获得任何特定于PHP的补全。
或者,获取源包并在readline支持下对其进行重建。Readline支持仅由于许可问题而被排除在外,但是这些问题仅禁止分发与readline链接的PHP5,它们不禁止您使用它。
apt-get source php5-cli
apt-get install build-essential fakeroot
apt-get build-dep php5-cli
cd php5-*/
# Edit debian/rules to configure with readline support
# Add an entry to debian/changelog to remember what you did
dpkg-buildpackage -rfakeroot -us -uc -b -nc
rlwrap
似乎没有太大帮助。当我运行时rlwrap php5
,输入echo 1;
,然后按回车键,然后按Ctrl-D(输入结束),它将输出输入echo 1;
而不是结果(1)。感谢您指出这是许可问题。
rlwrap php5
一下php5
,除了前者允许使用命令行版本外,我发现和just 之间没有区别。如果输入<?php echo 1;?>
,则输出为1
,但无论哪种情况都不会立即发出。Googling建议这php5
根本不是PHP REPL,而应该使用类似phpsh的东西。
<?php
或?>
。我同意php没有完整的REPL。但是,使用具有有效readline支持的已编译版本(例如,我链接的dotdeb程序包),在按Enter键后,它将立即输出1(或任何实际输出)。我同意rlwrap和没有readline之间没有任何显着差异(除了行编辑和历史记录,这很好,但没有立即输出有用)。
尝试这个:
$ php -a
Interactive mode enabled
<?php echo "hi!"; ?>
按Ctrl-d
<?php ?>
块内执行PHP代码。我没有意识到,这表明我之前误解了吉尔斯。
这些都不对我有用。请改用http://www.phpsh.org/。
在debian jessie和debian sid中使用:
sudo apt-get install php5 php5-readline
然后
php -a
Interactive mode enabled
php > echo 1+2;
3
php >
php>
对我来说仍然没有提示:(