无法使用命令行解释器(Can not use command line interpreter)

2019-07-29 03:22发布

我试图在PHP解释器来执行简单的PHP代码。 当我执行命令php -a我得到的消息

交互模式启用

如果没有对PHP输入的任何地方。 但我可以通过命令执行PHP代码php -r 。 例如:

php -r "echo 'Hello stackoverflow!';"

你好计算器!

Answer 1:

安装此:

php5-readline

然后尝试使用:

php -a


Answer 2:

键入php -m ,并确保你有readline的模块。 如果你不这样做,你将无法使用它。

http://www.php.net/manual/en/features.commandline.interactive.php

由于PHP 5.1.0中,CLI SAPI提供使用-a选项,如果PHP与--with-readline的选项编译交互的shell。



Answer 3:

似乎有你的PHP和libreadline之间的编译/链接错误。 这是在记录PHP错误#48759 。

  • 你自己编译PHP? 你玩弄--configure并没有做一个适当的make clean您的最终版本之前?
  • 请问php -m表的readline为启用功能? (PHP是否建有选项--with-readline
  • 什么是你的PHP版本?
  • 你用什么分布?
  • 你有没有安装libreadline(将* -dev包)?


Answer 4:

之后我累了编译它,我用PHPSH每台机器上的(如乔伊 - 亚当斯提到)

这是更好然后PHP -a(语法高亮和自动完成)

安装Python phpsh

看看安装-PHP5与- readline的支持上,Debian的喘息

$ sudo apt-get install python # this is necessary to run phpsh
$ cd ~/

$ wget https://github.com/facebook/phpsh/zipball/master
$ unzip phpsh-master.zip

$ cd phpsh-master
$ sudo cp -r src /etc/phpsh # phpsh seems to complain unless it resides at /etc/phpsh
$ sudo ln -s /etc/phpsh/phpsh /usr/bin/phpsh # put phpsh on the $PATH


Answer 5:

你是在交互模式,但没有提示,因为您可能没有可用的ReadLine模式。 你刚才只需要开始打字,和你的命令将被评估按Enter键后。 它看起来并不像什么是怎么回事,但如果输入,例如:

<?php

echo "hello world";

?>

......你会得到输出...

如果输入外撑块,它们会评估你按回车键闭幕后后}

<?php 
for ($i = 0; $i < 5; $i++) {
  echo $i;
}
// prints 12345 after closing }

请注意,您必须以<?php或任何进入将不会被评估。

更新(年后):

在运行该厂商的安全补丁5.3.3 PHP在Red Hat(RHEL5)系统,我也遇到过这并没有回显以下结束括号交互模式。

相反,输出缓冲区没有刷新,直到我按下Ctrl键 d。 实际上,这使得交互式会话一次性使用。 插入所有代码输入, 按Ctrl d来一次返回所有输出。



Answer 6:

要检查是否已经安装的readline模块,类型: php -m | grep readline php -m | grep readline

如果没有显示,安装的readline模块: sudo apt-get install php5-readline

模块安装完成后,你可以重新检查它与先前的命令存在,比进入交互模式: php -a



Answer 7:

由于没有安装模块的ReadLine。 http://php.net/manual/en/features.commandline.interactive.php

这是我如何通过重新编译PHP源代码安装模块:

查找以前的配置命令:

$ php -i | grep configure
Configure Command =>  './configure'  '--prefix=/usr/local/php7' ...

然后重新编译:

./configure --prefix=/usr/local/php7 \
--with-readline \

...

$ make clean 
$ make
$ make test 
$ sudo make install

检查是否安装的readline模块:

$ php m | grep readline
readline

然后开始PHP的交互的shell:

$ php -a
Interactive shell

php >


Answer 8:

如果您使用的是Mac,然后安装自制( http://brew.sh )然后键入:冲泡安装phpsh

然后你就可以运行phpsh得到一个交互的shell。



Answer 9:

这是你应该看到:

# php -a
Interactive shell

php > echo 1+1;
2
php > echo PHP_VERSION;
5.3.2-1ubuntu4.14
php > exit
#


文章来源: Can not use command line interpreter