转载自:http://phpff.com/41.html
从版本 4.3.0 开始,PHp提供了一种新类型的 SAPI(Server Application Programming Interface,服务端应用编程端口)支持,名为 CLI,意为 Command Line Interface,即命令行接口。顾名思义,该 SAPI 模块主要用作 PHp的开发外壳应用。CLI SAPI和其它 SAPI模块相比有很多的不同之处,我们将在本章中详细阐述。值得一提的是,CLI和 CGI 是不同的 SAPI,尽管它们之间有很多共同的行为。
CLI SAPI 最先是随 PHp4.2.0 版本发布的,但仍旧只是一个实验性的版本,并需要在运行 ./configure 时加上 --enable-cli参数。从 PHp4.3.0 版本开始,CLI SAPI 成为了正式模块,--enable-cli参数会被默认得设置为 on,也可以用参数 --disable-cli来屏蔽。
从 PHp4.3.0开始,CLI/CGI 二进制执行文件的文件名、位置和是否存在会根据 PHp在系统上的安装而不同。在默认情况下,当运行 make 时,CGI 和 CLI 都会被编译并且分别放置在 PHp源文件目录的 sapi/cgi/php 和 sapi/cli/php 下。可以注意到两个文件都被命名为了 php。在 make install的过程中会发生什么取决于配置行。如果在配置的时候选择了一个 SAPI 模块,如 apxs,或者使用了 --disable-cgi参数,则在 make install 的过程中,CLI 将被拷贝到 {pFIX}/bin/php,除非 CGI 已经被放置在了那个位置。因此,例如,如果在配置行中有 --with--apxs,则在 make install 的过程中,CLI 将被拷贝到 {pFIX}/bin/php。如果希望撤销 CGI 执行文件的安装,请在 make install之后运行 make install-cli。或者,也可以在配置行中加上 --disable-cgi参数。
选项名称 | 长名称 | 说明 |
---|---|---|
-a | --interactive | 交互式运行 PHP。如果编译 PHp时加入了 Readline 扩展(Windows 下不可用),那将会得到一个很好的外壳,包括一个自动完成的功能(例如可以在键入变量名的时候,按下 TAB 键,PHp会自动完成该变量名)以及命令历史记录,可以用上下键来访问。历史记录存在 ~/.php_history 文件中。
|
-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。此参数在 PHp4.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 -? | --helpand --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参数。
|
-m | --modules | 使用该参数,PHp将打印出内置以及已加载的 PHp及 Zend 模块: $ php-m [PHpModules] xml tokenizer standard session posix pcre overload mysql mbstring ctype [Zend Modules] |
-r | --run | 使用该参数可以在命令行内运行单行 PHp代码。无需加上 PHp的起始和结束标识符(<?php 和 ?>),否则将会导致语法解析错误。
|
-B | --process-begin | 在处理 stdin 之前先执行 PHp代码。PHp5 新加。 |
-R | --process-code | 对每个输入行都执行 PHp代码。PHp5 新加。 此模式下有两个特殊变量:$argn和 $argi。$argn包含 PHp当前处理的行内容,而 $argi 则包含该行号。 |
-F | --process-file | 对每个输入行都执行 PHp文件。PHp5 新加。 |
-E | --process-end | 在处理完输入后执行的 PHp代码。PHp5 新加。 使用 -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 头。
|
-v | --version | 将 PHP,PHpSAPI 和 Zend 的版本信息写入标准输出。例如: $ php-v PHp4.3.0 (cli), Copyright (c) 1997-2002 The PHpGroup Zend Engine v1.3.0, Copyright (c) 1998-2002 Zend Technologies |
-w | --strip | 显示除去了注释和多余空白的源代码。
|
-z | --zend-extension | 加载 Zend 扩展库。如果仅给定一个文件名,PHp将试图从当前系统扩展库的默认路径(在 Linux 系统下,该路径通常由 /etc/ld.so.conf指定)加载该扩展库。如果用一个绝对路径指定文件名,则不会使用系统的扩展库默认路径。如果用相对路径指定的文件名,则 PHp仅试图在当前目录的相对目录加载扩展库。 |
让 PHp运行指定文件
phpmy_script.php
或
php-f my_script.php
以上两种方法(使用或不使用 -f参数)都能够运行给定的 my_script.php 文件。可以选择任何文件来运行,指定的 PHp脚本并非必须要以 .php为扩展名,它们可以有任意的文件名和扩展名。