PHP: Interactive shell – Manual

Interactive shell

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.

Using the interactive shell you are able to type PHP code and have it executed directly.

Example #1 Executing code using the interactive shell

$ php -aInteractive shellphp > echo 5 8;13php > function addTwo($n)php > {php { return $n   2;php { }php > var_dump(addtwo(2));int(4)php >

The interactive shell also features tab completion for functions, constants, class names, variables, static method calls and class constants.

Example #2 Tab completion

Pressing the tab key twice when there are multiple possible completions will result in a list of these completions:

php > strp[TAB][TAB]strpbrk   strpos    strptime  php > strp

When there is only one possible completion, pressing tab once will complete the rest on the same line:

php > strpt[TAB]ime(

Completion will also work for names that have been defined during the current interactive shell session:

php > $fooThisIsAReallyLongVariableName = 42;php > $foo[TAB]ThisIsAReallyLongVariableName

The interactive shell stores your history which can be accessed using the up and down keys. The history is saved in the ~/.php_history file.

As of PHP 5.4.0, the CLI SAPI provides the php.ini settings cli.pager and cli.prompt. The cli.pager setting allows an external program (such as less) to act as a pager for the output instead of being displayed directly on the screen. The cli.prompt setting makes it possible to change the php > prompt.

In PHP 5.4.0 it was also made possible to set php.ini settings in the interactive shell using a shorthand notation.

Example #3 Setting php.ini settings in the interactive shell

The cli.prompt setting:

php > #cli.prompt=hello world :> hello world :>

Using backticks it is possible to have PHP code executed in the prompt:

php > #cli.prompt=`echo date('H:i:s');` php > 15:49:35 php > echo 'hi';hi15:49:43 php > sleep(2);15:49:45 php >

Setting the pager to less:

php > #cli.pager=lessphp > phpinfo();(output displayed in less)php >

The cli.prompt setting supports a few escape sequences:

cli.prompt escape sequences

Sequence Description e Used for adding colors to the prompt. An example could be e[032mv e[031mb e[34m> e[0m v The PHP version. b Indicates which block PHP is in. For instance /* to indicate being inside a multi-line comment. The outer scope is denoted by php. > Indicates the prompt character. By default this is >, but changes when the shell is inside an unterminated block or string. Possible characters are: ‘ ” { ( >


Files included through auto_prepend_file and auto_append_file are parsed in this mode but with some restrictions – e.g. functions have to be defined before called.


Autoloading is not available if using PHP in CLI interactive mode.

Leave a Reply

Your email address will not be published. Required fields are marked *