我正在运行 Debian Squeeze 并试图进入 PHP 交互模式。(我已经安装了 php5-cli 以及通常的 php 安装包)通常我会通过php -a
在这个系统上运行来做到这一点,我得到以下信息,没有通常的 php 提示:
启用交互模式
非常感谢任何帮助。
不幸的是,这是一个 Debian 特有的错误:#576218。
总结错误报告中的评论:似乎没有简单的解决方法。但是,Ubuntu 和可能的其他发行版不受此错误的影响,因为它们构建 PHP 是针对libreadline
. Debian 不使用libreadline
,但libedit
由于许可问题。
另一个答案是缺少解决方案。
如果您想要一些没有持久环境的简短命令,请执行
while read -er line; do php -r "$line"; done
获取不同的 php,(通过编译或其他方式)链接到 readline 而不是 libedit(这在 debian 中没有完成,因为参与 php 打包的人不希望 readline 的 gpl 应用于 php),或者更新版本的 php修复了这个错误。
您可以自己编译 readline 模块。使用 Debian Wheezy 和 PHP 5.4,我可以通过这样做来解决这个问题(以 root 身份运行命令):
# apt-get install php5-dev libedit-dev libreadline-dev
# mkdir php && cd php
# apt-get source php5-cli
# cd php5-5.4.4/ext/readline
# phpize
# ln -s ../../sapi/
# ./configure
# make
# cp modules/readline.so /usr/lib/php5/<number like 20100525>/
# chmod -x /usr/lib/php5/20100525/readline.so
# echo 'extension=readline.so' > /etc/php5/mods-available/readline.ini
# cd /etc/php5/cli/conf.d
# ln -s ../mods-available/readline.ini 20-readline.ini
现在 PHP 控制台应该可以正常工作了。
我已经为 Ubuntu 12.04 Precise Pangolin(基于 Debian Wheezy)解决了这个问题,所以:
sudo apt-get install php5-readline