Can not use command line interpreter

泄露秘密 提交于 2020-01-01 02:10:07

问题


I have tried to execute simple php code in the php interpreter. When I executed the command php -a I getting the message

Interactive mode enabled

Without any place for php input. But I can execute a php code through the command php -r. for example:

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

Hello stackoverflow!


回答1:


Install this:

php5-readline

then try use:

php -a



回答2:


type php -m and make sure you have the readline module. If you don't you won't be able to use it.

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

As of PHP 5.1.0, the CLI SAPI provides an interactive shell using the -a option if PHP is compiled with the --with-readline option.




回答3:


There seems to be a compilation / linkage error between your PHP and libreadline. This is documented in PHP Bug #48759.

  • Did you compile PHP by yourself? Did you play around with --configure and didn't do a proper make clean before your final build?
  • Does php -m list readline as enabled feature? (Is PHP built with option --with-readline)
  • What is you php version?
  • What distribution do you use?
  • Do you have the libreadline (the *-dev package) installed?



回答4:


After I got tired of compiling it on each machine I used PHPSH (as mentioned by joey-adams)

It is much better then php -a (syntax highlighting and autocompletion)

Install python phpsh

look at install-php5-with-readline-support-on-debian-wheezy

$ 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



回答5:


You are in interactive mode, but without a prompt, since you may not have readline mode available. You just just need to start typing, and your commands will be evaluated after you press enter. It doesn't look like anything is going on, but if you enter, for example:

<?php

echo "hello world";

?>

...you will get output...

If you enter braced blocks, they get evaluated after you press enter following the closing }

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

Note that you must start with <?php or anything entered won't be evaluated.

Update (years later):

On a Red Hat (RHEL5) system running the vendor's security patched PHP 5.3.3, I have encountered an interactive mode which did not echo back following closing braces.

Instead, the output buffer was not flushed until I pressed Ctrld. Effectively, this makes the interactive session one-time-use. Insert all code input, and Ctrld to return all output at once.




回答6:


To check if you have readline module installed, type: php -m | grep readline

If nothing displayed, install readline module: sudo apt-get install php5-readline

After module installation you can recheck it's presence with previous command, than enter interactive mode with: php -a




回答7:


Because module readline not installed. http://php.net/manual/en/features.commandline.interactive.php

This is how I install the module by recompiling php source codes:

Find previous Configure command:

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

Then recompile:

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

...

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

Check if readline module installed:

$ php m | grep readline
readline

Then start php Interactive shell:

$ php -a
Interactive shell

php >



回答8:


If you're using Mac, then install Homebrew (http://brew.sh) then type: brew install phpsh

And then you can run phpsh to get an interactive shell.




回答9:


This is what you should see:

# php -a
Interactive shell

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


来源:https://stackoverflow.com/questions/10283187/can-not-use-command-line-interpreter

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!