如何在Debian Wheezy上使用可用的交互式提示安装PHP CLI?


Answers:


10

使用Dotdeb Debian稳定软件包。尽管文档中没有对此进行说明,但是稳定的软件包目前可以在Wheezy / testing中正常工作。按照说明进行操作后,请执行以下操作:

apt-get install php5-cli

作为根。


1
nup php>对我来说仍然没有提示:(
mulllhausen


4

除了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应该有更多信息。


谢谢,有帮助。但是在Ubuntu上遇到了2个问题。缺少libedit库(通过安装libedit-dev修复),并且发生了此编译错误:bugs.php.net/bug.php?id=62612也存在解决方案。
Dziamid

有趣的是我如何矛盾自己!在这里我建议phpize等的错误我说这不是“完全”支持这样做;-)
约翰内斯

3

安装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)。感谢您指出这是许可问题。
Matthew Flaschen

3
@Matthew:我对PHP一无所知,但是在lenny上尝试rlwrap php5一下php5,除了前者允许使用命令行版本外,我发现和just 之间没有区别。如果输入<?php echo 1;?>,则输出为1,但无论哪种情况都不会立即发出。Googling建议这php5根本不是PHP REPL,而应该使用类似phpsh的东西。
吉尔(Gilles)“所以,别再邪恶了”,

1
您无需在交互式外壳程序中输入<?php ?>。我同意php没有完整的REPL。但是,使用具有有效readline支持的已编译版本(例如,我链接的dotdeb程序包),在按Enter键后,它将立即输出1(或任何实际输出)。我同意rlwrap和没有readline之间没有任何显着差异(除了行编辑和历史记录,这很好,但没有立即输出有用)。
马修·

@Matthew:嗯,所以readline支持不仅仅与readline链接,还改变了程序的行为吗?好像很奇怪 然后,您可以从源代码进行重建,或者使用dotdeb软件包(如果它们适合您)。
吉尔斯(Gilles)“所以,别再邪恶了”,

是的,PHP中的许多东西看起来很奇怪。;)但是,确实看起来readline代码路径在该区域中仅与readline切线相关。
Matthew Flaschen

3

尝试这个:

$ php -a
Interactive mode enabled

<?php echo "hi!"; ?>

按Ctrl-d


5
看来这与安装PHP没有任何关系
Michael Mrozek

1
即使它不能直接回答问题,这实际上也非常有帮助。它显示了在 readline路径中,PHP仅在<?php ?>块内执行PHP代码。我没有意识到,这表明我之前误解了吉尔斯。
马修·弗拉申

3

对于Ubuntu用户,php5-readline是您需要安装的附加软件包,以具有可用的php命令提示符:

sudo apt-get install php5-cli php5-readline
sudo php5enmod readline

我必须在Ubuntu 14.04上执行此操作。



1

在debian jessie和debian sid中使用:

sudo apt-get install php5 php5-readline

然后

php -a
Interactive mode enabled

php > echo 1+2;
3
php >
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.