php – PHP Command Line Interface ‘CLI’

php-cgi – PHP Common Gateway Interface ‘CGI’ command


php [options] [ -f ] file [[–] args…]

php [options] -r code [[–] args…]

php [options] [-B begin_code] -R code [-E end_code] [[–] args…]

php [options] [-B begin_code] -F file [-E end_code] [[–] args…]

php [options] — [ args…]

php [options] -a

php [options] -S addr:port [-t docroot]


PHP is a widely-used general-purpose scripting language that is especially suited for Web

development and can be embedded into HTML. This is the command line interface that enables

you to do the following:

You can parse and execute files by using parameter -f followed by the name of the file to

be executed.

Using parameter -r you can directly execute PHP code simply as you would do inside a .php

file when using the eval() function.

It is also possible to process the standard input line by line using either the parameter

-R or -F. In this mode each separate input line causes the code specified by -R or the

file specified by -F to be executed. You can access the input line by $argn. While pro‐

cessing the input lines $argi contains the number of the actual line being processed. Fur‐

ther more the parameters -B and -E can be used to execute code (see -r) before and after

all input lines have been processed respectively. Notice that the input is read from STDIN

and therefore reading from STDIN explicitly changes the next input line or skips input


PHP also contains an built-in web server for application development purpose. By using the

-S option where addr:port point to a local address and port PHP will listen to HTTP

requests on that address and port and serve files from the current working directory or

the docroot passed by the -t option.

If none of -r -f -B -R -F -E or -S is present but a single parameter is given then this

parameter is taken as the filename to parse and execute (same as with -f). If no parameter

is present then the standard input is read and executed.


以交互的方式运行PHP。直接执行输入的PHP代码片段。当启用readline支持时,还可以编辑这些行,并且还具有历史记录支持,TAB补全等功能。如下所示,在命令行中执行php -a命令,进入交互SHELL:

# /usr/local/php-5.6/bin/php -a

Interactive mode enabled

php > var_dump(array([‘c1’ => ‘red’]));

array(1) {


array(1) {

string(3) “red”


如上示例,php >为提示符。我们在交互模式中执行PHP代码var_dump(array([‘c1’ => ‘red’]));,这与在PHP脚本中执行是类似的。

注意,如果你的PHP没有readline模块,是无法进入交互SHELL的,只能进入交互模式,在交互模式下是没有php >提示符的。有关交互模式与交互SHELL的区别参考PHP笔记。

–bindpath address:port|port,-b address:port|port

Bind Path for external FASTCGI Server mode (CGI only).


-C Do not chdir to the script’s directory (CGI only).


-q Quiet-mode. Suppress HTTP header output (CGI only).

–timing count

-T count Measure execution time of script repeated count times (CGI only).

–php-ini path|file

-c path|file Look for php.ini file in the directory path or use the specified file


-n No php.ini file will be used

–define foo[=bar]

-d foo[=bar] Define INI entry foo with value bar

-e Generate extended information for debugger/profiler

–file file

-f file Parse and execute file


-h This help


-H Hide script name (file) and parameters (args…) from external tools. For
example you may want to use this when a php script is started as a daemon

and the command line contains sensitive data such as passwords.


-i PHP information and configuration


-l Syntax check only (lint)


-m Show compiled in modules

–run code

-r code Run PHP code without using script tags ‘<?..?>’

–process-begin code

-B begin_code Run PHP begin_code before processing input lines

–process-code code

-R code Run PHP code for every input line

–process-file file

-F file Parse and execute file for every input line

–process-end code

-E end_code Run PHP end_code after processing all input lines


-s Output HTML syntax highlighted source

–server addr:port

-S addr:port Start built-in web server on the given local address and port

–docroot docroot

-t docroot Specify the document root to be used by the built-in web server


-v Version number


-w Output source with stripped comments and whitespace

–zend-extension file

-z file Load Zend extension file

args… Arguments passed to script. Use ‘–‘ args when first argument starts with
‘-‘ or script is read from stdin

–rfunction name

–rf name Shows information about function name

–rclass name

–rc name Shows information about class name

–rextension name

–re name Shows information about extension name

–rz name Shows information about Zend extension name

–rextinfo name

–ri name Shows configuration for extension name

–ini Show configuration file names


php-cli.ini The configuration file for the CLI version of PHP.

php.ini The standard configuration file will only be used when php-cli.ini cannot
be found.


php -r ‘echo “Hello World\n”;’
This command simply writes the text “Hello World” to standard out.

php -r ‘print_r(gd_info());’
This shows the configuration of your gd extension. You can use this to easily check

which image formats you can use. If you have any dynamic modules you may want to use

the same ini file that php uses when executed from your webserver. There are more

extensions which have such a function. For dba use:

php -r ‘print_r(dba_handlers(1));’

php -R ‘echo strip_tags($argn).”\n”;’
This PHP command strips off the HTML tags line by line and outputs the result. To see

how it works you can first look at the following PHP command ´php -d html_errors=1

-i´ which uses PHP to output HTML formatted configuration information. If you then

combine those two ´php …|php …´ you’ll see what happens.

php -E ‘echo “Lines: $argi\n”;’
Using this PHP command you can count the lines being input.

php -R ‘@$l+=count(file($argn));’ -E ‘echo “Lines:$l\n”;’
In this example PHP expects each input line being a file. It counts all lines of the

files specified by each input line and shows the summarized result. You may combine

this with tools like find and change the php scriptlet.

php -R ‘echo “$argn\n”; fgets(STDIN);’
Since you have access to STDIN from within -B -R -F and -E you can skip certain input

lines with your code. But note that in such cases $argi only counts the lines being

processed by php itself. Having read this you will guess what the above program does:

skipping every second input line.


You can use a shebang line to automatically invoke php from scripts. Only the CLI version

of PHP will ignore such a first line as shown below:



// your script



For a more or less complete description of PHP look here: