命令行选项

选项名称

长名称

说明

-a

--interactive

交互式运行 PHP。如果编译 PHP 时加入了 ​​ Readline​​ 扩展(Windows 下不可用),那将会得到一个很好的外壳,包括一个自动完成的功能(例如可以在键入变量名的时候,按下 TAB 键,PHP 会自动完成该变量名)以及命令历史记录,可以用上下键来访问。历史记录存在~/.php_history

Note:

通过 auto_prepend_file​ 和​​auto_append_file​​ 包含的文件在此模式下会被解析,但有些限制,例如函数必须在被调用之前定义。


-c

--php-ini

用该参数,可以指定一个放置 php.ini 文件的目录,或者直接指定一个自定义的INI 文件(其文件名可以不是 php.ini),例如:





$ php -c /custom/directory/ my_script.php$ php -c /custom/directory/custom-file.ini my_script.php



如果不指定此选项,PHP 将在默认位置搜索文件。


-n

--no-php-ini

完全忽略 php.ini。此参数在 PHP 4.3.0 以后有效。

-d

--define

用该参数可以自行设置任何可以在 php.ini





-d configuration_directive[=value]





例子(因版面原因而折行显示):





# 取值部分被省略,将会把配置选项设为 "1"$ php -d max_execution_time -r '$foo = ini_get("max_execution_time"); var_dump($foo);'string(1) "1"# 取值部分为空白,将会把配置选项设为 ""php -d max_execution_time= -r '$foo = ini_get("max_execution_time"); var_dump($foo);'string(0) ""# 配置选项将被设置成为任何 '=' 字符之后的值$ php -d max_execution_time=20 -r '$foo = ini_get("max_execution_time"); var_dump($foo);'string(2) "20"$ php -d max_execution_time=doesntmakesense -r '$foo = ini_get("max_execution_time"); var_dump($foo);'string(15) "doesntmakesense"





-e

--profile-info

激活扩展信息模式,被用于调试/测试。

-f

--file

解析并运行 -f

-h and -?

--help and --usage

使用该参数,可以得到完整的命令行参数的列表及这些参数作用的简单描述。

-i

--info

该命令行参数会调用 ​​phpinfo()​​函数并显示出结果。如果 PHP 没有正常工作,建议执行 php -i 命令来查看在信息表格之前或者对应的地方是否有任何错误信息输出。请注意当使用 CGI 摸索时,输出的内容为 HTML 格式,因此输出的信息篇幅较大。

-l

--syntax-check

该参数提供了对指定 PHP 代码进行语法检查的方便的方法。如果成功,则向标准输出写入 No syntax errors detected in <filename> 字符串,并且外壳返回值为0。如果失败,则输出 Errors parsing <filename> 以及内部解析器错误信息到标准输出,同时外壳返回值将别设置为255

该参数将无法检查致命错误(如未定义函数),如果也希望检测致命错误,请使用 -f

Note:

该参数不能和 -r


-m

--modules

使用该参数,PHP 将打印出内置以及已加载的 PHP 及 Zend 模块:





$ php -m[PHP Modules]xmltokenizerstandardsessionposixpcreoverloadmysqlmbstringctype[Zend Modules]





-r

--run

使用该参数可以在命令行内运行单行 PHP 代码。无需加上 PHP 的起始和结束标识符(<?php?>),否则将会导致语法解析错误。

Note:

使用这种形式的 PHP 时,应注意避免和外壳环境进行的命令行参数替换相冲突。

显示语法解析错误的范例




$ php -r "$foo = get_defined_constants();"Command line code(1) : Parse error - parse error, unexpected '='



这里的问题在于即使使用了双引号 ",sh/bash 仍然实行了参数替换。由于 $foo没有被定义,被替换后它所在的位置变成了空字符,因此在运行时,实际被 PHP 读取的代码为:



$ php -r " = get_defined_constants();"



正确的方法是使用单引号 '。在用单引号引用的字符串中,变量不会被 sh/bash 还原成其原值。



$ php -r '$foo = get_defined_constants(); var_dump($foo);'array(370) { ["E_ERROR"]=> int(1) ["E_WARNING"]=> int(2) ["E_PARSE"]=> int(4) ["E_NOTICE"]=> int(8) ["E_CORE_ERROR"]=> [...]



如果使用的外壳不是 sh/bash,可能会碰到更多问题。请将碰到的 Bug 向 ​​ » http://bugs.php.net/​​ 报告。注意,当试图将 shell 变量用到代码中或者使用反斜线时仍然很容易碰到问题。



Note:

-r 在CLI SAPI 中有效,在 CGI


Note:

此选项只用于非常基本的用途。因此一些配置指令(例如 ​​ auto_prepend_file​​​ 和 ​​auto_append_file​​)在此模式下被忽略。




-B

--process-begin

在处理 stdin 之前先执行 PHP 代码。PHP 5 新加。

-R

--process-code

对每个输入行都执行 PHP 代码。PHP 5 新加。

此模式下有两个特殊变量:$argn和 $argi。$argn包含 PHP 当前处理的行内容,而 $argi则包含该行号。

-F

--process-file

对每个输入行都执行 PHP 文件。PHP 5 新加。

-E

--process-end

在处理完输入后执行的 PHP 代码。PHP 5 新加。

使用 -B ,-R 和-E





$ find my_proj | php -B '$l=0;' -R '$l += count(@file($argn));' -E 'echo "Total Lines: $l\n";'Total Lines: 37328





-s

--syntax-highlight and --syntax-highlight

显示有语法高亮色彩的源代码。

该参数使用内建机制来解析文件并为其生成一个 HTML 高亮版本并将结果写到标准输出。请注意该过程所做的只是生成了一个<code> [...] </code>HTML 标记的块,并不包含任何的 HTML 头。

Note:

该选项不能和 -r


-v

--version

将 PHP,PHP SAPI 和 Zend 的版本信息写入标准输出。例如:





$ php -vPHP 4.3.0 (cli), Copyright (c) 1997-2002 The PHP GroupZend Engine v1.3.0, Copyright (c) 1998-2002 Zend Technologies





-w

--strip

显示除去了注释和多余空白的源代码。

Note:

该选项不能和 -r


-z

--zend-extension

加载 Zend 扩展库。如果仅给定一个文件名,PHP 将试图从当前系统扩展库的默认路径(在 Linux 系统下,该路径通常由 /etc/ld.so.conf

​http://php.net/manual/zh/features.commandline.php​