-a |
--interactive |
以交互方式运行 PHP。有关更多信息,请参阅 交互式 shell 部分。
|
-b |
--bindpath |
外部 FASTCGI 服务器模式的绑定路径(仅限 CGI)。
|
-C |
--no-chdir |
不要将目录更改为脚本所在的目录(仅限 CGI)。
|
-q |
--no-header |
静默模式。抑制 HTTP 头输出(仅限 CGI)。
|
-T |
--timing |
测量脚本执行 count 次的时间(仅限 CGI)。
|
-c |
--php-ini |
指定要查找 php.ini 的目录,或指定自定义 INI 文件(不需要命名为 php.ini),例如:
如果未指定此选项,则在 默认位置 中搜索 php.ini。
|
-n |
--no-php-ini |
完全忽略 php.ini。
|
-d |
--define |
为 php.ini 中允许的任何配置指令设置自定义值。语法为:
-d configuration_directive[=value]
示例 #1 使用 -d 设置 INI 设置的示例
# Omitting the value part will set the given configuration directive to "1"
$ php -d max_execution_time
-r '$foo = ini_get("max_execution_time"); var_dump($foo);'
string(1) "1"
# Passing an empty value part will set the configuration directive to ""
php -d max_execution_time=
-r '$foo = ini_get("max_execution_time"); var_dump($foo);'
string(0) ""
# The configuration directive will be set to anything passed after the '=' character
$ 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 和 -? |
--help 和 --usage |
输出一个命令行选项列表,其中包含对每个选项的功能的单行描述。 |
-i |
--info |
调用 phpinfo() 并输出结果。如果 PHP 无法正常工作,建议使用命令 php -i 并查看在信息表之前或代替信息表是否打印出任何错误消息。注意,当使用 CGI 模式时,输出为 HTML 因此非常大。 |
-l |
--syntax-check |
提供了一种方便的方法来仅对给定的 PHP 代码执行语法检查。成功时,文本 No syntax errors detected in <filename> 将写入标准输出,shell 返回码为 0 。失败时,文本 Errors parsing <filename> 以及内部解析器错误消息将写入标准输出,shell 返回码设置为 -1 。
此选项不会找到致命错误(如未定义的函数)。使用 -f 来测试致命错误。
注意:
此选项不能与 -r 选项一起使用。
|
-m |
--modules |
示例 #2 打印内置(和已加载的)PHP 和 Zend 模块
$ php -m
[PHP Modules]
xml
tokenizer
standard
session
posix
pcre
overload
mysql
mbstring
ctype
[Zend Modules]
|
-r |
--run |
允许直接在命令行上执行 PHP。PHP 开始和结束标记 (<?php 和 ?> ) **不需要** 并且如果存在将导致解析错误。
注意:
使用这种形式的 PHP 时,必须注意不要与 shell 执行的命令行变量替换发生冲突。
示例 #3 使用双引号时出现语法错误
$ php -r "$foo = get_defined_constants();"
PHP Parse error: syntax error, unexpected '=' in Command line code on line 1
Parse error: syntax error, unexpected '=' in Command line code on line 1
这里的问题是 sh/bash 即使使用双引号 " 也会执行变量替换。由于变量 $foo 不太可能被定义,因此它将扩展为空,导致传递给 PHP 执行的代码实际上读取为:
正确的方法是使用单引号 ' 。单引号字符串中的变量不会被 sh/bash 扩展。
示例 #4 使用单引号来防止 shell 的变量替换
$ 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 之外的 shell,可能会遇到更多问题 - 如果适用,应在 » https://github.com/php/php-src/issues 上打开错误报告。尝试在命令行代码中使用变量(shell 或 PHP)或使用反斜杠进行转义时,仍然很容易遇到麻烦,因此在执行此操作时要格外小心。你已经被警告了!
注意:
-r 在 CLI SAPI 中可用,但在 CGI SAPI 中不可用。
注意:
此选项仅用于非常基本的代码,因此某些配置指令(例如 auto_prepend_file 和 auto_append_file)在此模式下被忽略。
|
-B |
--process-begin |
在处理 stdin 之前要执行的 PHP 代码。
|
-R |
--process-code |
对每行输入执行的 PHP 代码。
在此模式下可以使用两个特殊变量:$argn 和 $argi。 $argn 将包含 PHP 正在处理的当前行,而 $argi 将包含行号。
|
-F |
--process-file |
对每行输入执行的 PHP 文件。
|
-E |
--process-end |
处理完输入后要执行的 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 |
--server |
启动 内置 Web 服务器。
|
-t |
--docroot |
为 内置 Web 服务器 指定文档根目录。 |
-s |
--syntax-highlight 和 --syntax-highlighting |
显示彩色语法突出显示的源代码。
此选项使用内部机制来解析文件,并将它的 HTML 突出显示版本写入标准输出。注意,它只是生成一个 <code> [...] </code> HTML 标记块,没有 HTML 标题。
注意:
此选项不能与 -r 选项一起使用。
|
-v |
--version |
示例 #6 使用 -v 获取 SAPI 名称以及 PHP 和 Zend 的版本
$ php -v
PHP 5.3.1 (cli) (built: Dec 11 2009 19:55:07)
Copyright (c) 1997-2009 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2009 Zend Technologies
|
-w |
--strip |
显示删除了注释和空白的源代码。
注意:
此选项不能与 -r 选项一起使用。
|
-z |
--zend-extension |
加载 Zend 扩展。如果只提供文件名,PHP 会尝试从系统上的当前默认库路径(通常是 Linux 系统上的 /etc/ld.so.conf,例如)加载此扩展。传递带有绝对路径的文件名将不会使用系统的库搜索路径。包含目录信息的相对文件名将告诉 PHP 尝试相对于当前目录加载扩展。
|
|
--ini |
显示配置文件名称和扫描的目录。
示例 #7 --ini 示例
$ php --ini
Configuration File (php.ini) Path: /usr/dev/php/5.2/lib
Loaded Configuration File: /usr/dev/php/5.2/lib/php.ini
Scan for additional .ini files in: (none)
Additional .ini files parsed: (none)
|
--rf |
--rfunction |
显示有关给定函数或类方法的信息(例如,参数的数量和名称)。
此选项仅在 PHP 编译时带有 Reflection 支持时才可用。
示例 #8 基本 --rf 用法
$ php --rf var_dump
Function [ <internal> public function var_dump ] {
- Parameters [2] {
Parameter #0 [ <required> $var ]
Parameter #1 [ <optional> $... ]
}
}
|
--rc |
--rclass |
显示有关给定类的信息(常量、属性和方法列表)。
此选项仅在 PHP 编译时带有 Reflection 支持时才可用。
示例 #9 --rc 示例
$ php --rc Directory
Class [ <internal:standard> class Directory ] {
- Constants [0] {
}
- Static properties [0] {
}
- Static methods [0] {
}
- Properties [0] {
}
- Methods [3] {
Method [ <internal> public method close ] {
}
Method [ <internal> public method rewind ] {
}
Method [ <internal> public method read ] {
}
}
}
|
--re |
--rextension |
显示有关给定扩展的信息(php.ini 选项、定义的函数、常量和类列表)。
此选项仅在 PHP 编译时带有 Reflection 支持时才可用。
示例 #10 --re 示例
$ php --re json
Extension [ <persistent> extension #19 json version 1.2.1 ] {
- Functions {
Function [ <internal> function json_encode ] {
}
Function [ <internal> function json_decode ] {
}
}
}
|
--rz |
--rzendextension |
显示给定 Zend 扩展的配置信息(与 phpinfo() 返回的信息相同)。
|
--ri |
--rextinfo |
显示给定扩展的配置信息(与 phpinfo() 返回的信息相同)。可以使用“main”作为扩展名来获取核心配置信息。
示例 #11 --ri 示例
$ php --ri date
date
date/time support => enabled
"Olson" Timezone Database Version => 2009.20
Timezone Database => internal
Default timezone => Europe/Oslo
Directive => Local Value => Master Value
date.timezone => Europe/Oslo => Europe/Oslo
date.default_latitude => 59.930972 => 59.930972
date.default_longitude => 10.776699 => 10.776699
date.sunset_zenith => 90.583333 => 90.583333
date.sunrise_zenith => 90.583333 => 90.583333
|