命令行选项

PHP 二进制文件提供的命令行选项列表可以通过在任何时候运行 PHP 并使用 -h 开关来查询。

Usage: 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

  -a               Run interactively
  -c <path>|<file> Look for php.ini file in this directory
  -n               No php.ini file will be used
  -d foo[=bar]     Define INI entry foo with value 'bar'
  -e               Generate extended information for debugger/profiler
  -f <file>        Parse and execute <file>.
  -h               This help
  -i               PHP information
  -l               Syntax check only (lint)
  -m               Show compiled in modules
  -r <code>        Run PHP <code> without using script tags <?..?>
  -B <begin_code>  Run PHP <begin_code> before processing input lines
  -R <code>        Run PHP <code> for every input line
  -F <file>        Parse and execute <file> for every input line
  -E <end_code>    Run PHP <end_code> after processing all input lines
  -H               Hide any passed arguments from external tools.
  -S <addr>:<port> Run with built-in web server.
  -t <docroot>     Specify document root <docroot> for built-in web server.
  -s               Output HTML syntax highlighted source.
  -v               Version number
  -w               Output source with stripped comments and whitespace.
  -z <file>        Load Zend extension <file>.

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

  --ini            Show configuration file names

  --rf <name>      Show information about function <name>.
  --rc <name>      Show information about class <name>.
  --re <name>      Show information about extension <name>.
  --rz <name>      Show information about Zend extension <name>.
  --ri <name>      Show configuration for extension <name>.

命令行选项
选项 长选项 描述
-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 -c /custom/directory/ my_script.php

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

如果未指定此选项,则在 默认位置 中搜索 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 执行的代码实际上读取为:

$ php -r " = get_defined_constants();"

正确的方法是使用单引号 '。单引号字符串中的变量不会被 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)或使用反斜杠进行转义时,仍然很容易遇到麻烦,因此在执行此操作时要格外小心。你已经被警告了!

注意:

-rCLI SAPI 中可用,但在 CGI SAPI 中不可用。

注意:

此选项仅用于非常基本的代码,因此某些配置指令(例如 auto_prepend_fileauto_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

注意:

选项 -rBRFEH--ini--r[fcezi] 仅在 CLI 中可用。

添加注释

用户贡献的注释 3 个注释

0
dch
9 个月前
如果你想查看使用 shell 命令行中的 -i 开关并指定 php.ini 的 PHP 的当前配置,那么参数的顺序很重要。将 -i 放在 -c 之后可以得到想要的结果。

为默认 php.ini (cli) 打印信息
$ php -i --php-ini /etc/php/7.4/fpm/php.ini | grep -i "loaded conf"
Loaded Configuration File => /etc/php/7.4/cli/php.ini

为所需的 php.ini (fpm) 打印信息
$ php --php-ini /etc/php/7.4/fpm/php.ini -i | grep -i "loaded conf"
加载配置⽂件 => /etc/php/7.4/fpm/php.ini
-1
Ap.Muthu
9 年前
如果我们使用以下命令启动 PHP 的内置 Web 服务器(PHP v5.4 及更高版本):
php -S localhost:8000 -t htdocs
并且在 htdocs 目录下有一个名为 picture.jpg 的图片⽂件
并在 HTML 页面中引用它:
<img src="picture.jpg">
渲染的页面将不会显示图片,并且图片背后的 HTML 代码为:
http://localhost:8000/index.php/picture.jpg

但是,如果页面中的 HTML 代码为:
<img src="/picture.jpg">
则图片将正确显示。

因此,PHP 5.4.33 Win32 VC9 版本中相对地址解析出现了问题。
-21
yanshinian at yeah dot net
5 年前
获取 ./configure

php -i |grep configure

配置命令 => './configure' '--prefix=/app/webserver/php5' '--with-config-file-path=/app/webserver/php5/etc' '--with-config-file-scan-dir=/app/webserver/php5/etc/php.d' '--enable-inline-optimization' '--disable-debug' '--disable-rpath' '--enable-shared' '--enable-opcache' '--enable-fpm' '--with-fpm-user=appuser' '--with-fpm-group=appuser' '--with-mysql=mysqlnd' '--with-mysqli=mysqlnd' '--with-pdo-mysql=mysqlnd' '--with-gettext' '--enable-mbstring' '--enable-exif' '--enable-ftp' '--enable-wddx' '--with-iconv' '--with-mcrypt' '--with-mhash' '--with-openssl' '--enable-bcmath' '--enable-soap' '--with-libxml-dir' '--enable-pcntl' '--enable-shmop' '--enable-sysvmsg' '--enable-sysvsem' '--enable-sysvshm' '--enable-sockets' '--enable-gd-native-ttf' '--enable-gd-jis-conv' '--enable-calendar' '--with-curl=/app/webserver/curl' '--with-zlib' '--enable-zip' '--with-bz2' '--with-readline' '--with-gd' '--with-freetype-dir' '--with-png-dir' '--with-jpeg-dir' '--with-vpx-dir' '--with-xpm-dir' '--with-t1lib' '--disable-json'
To Top