无法进入PHP交互模式


Unable to get to PHP interactive mode

我正在运行Debian Squeeze&我正在尝试进入PHP交互模式。(我已经安装了php5-cli以及常见的php安装包)通常情况下,我会通过在这个系统上运行php -a来实现这一点,我会得到以下内容,而不需要通常的php提示:

启用交互模式

非常感谢您的帮助。

不幸的是,这是一个特定于Debian的错误:#576218。

要总结错误报告中的注释,请执行以下操作:对此似乎没有简单的解决方法。然而,Ubuntu和可能的其他发行版并没有受到这个bug的影响,因为它们是针对libreadline构建PHP的。由于许可问题,Debian不使用libreadline,而是使用libedit

另一个答案是缺少解决方案。

  1. 如果你想要一些没有持久环境的短命令,请执行

     while read -er line; do php -r "$line"; done
    
  2. 获取一个不同的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