목차
以下是 PHP 二进制文件(即 php.exe 程序)提供的命令行模式的选项参数,您随时可以通过 PHP -h 命令来查询这些参数。" >以下是 PHP 二进制文件(即 php.exe 程序)提供的命令行模式的选项参数,您随时可以通过 PHP -h 命令来查询这些参数。
백엔드 개발 PHP 튜토리얼 以下是 PHP 二进制文件(即 php.exe 程序)提供的命令行模式的选项参数,您随时可以通过 PHP -h 命令来查询这些参

以下是 PHP 二进制文件(即 php.exe 程序)提供的命令行模式的选项参数,您随时可以通过 PHP -h 命令来查询这些参

Jun 13, 2016 am 10:39 AM
gt php script string

PHP下的命令行执行

以下是 PHP 二进制文件(即 php.exe 程序)提供的命令行模式的选项参数,您随时可以通过 PHP -h 命令来查询这些参数。

Usage: php [options] [-f] <file> [args...]       php [options] -r <code> [args...]       php [options] [-- args...]  -s               Display colour syntax highlighted source.  -w               Display source with stripped comments and whitespace.  -f <file>        Parse <file>.  -v               Version number  -c <path>|<file> Look for php.ini file in this directory  -a               Run interactively  -d foo[=bar]     Define INI entry foo with value 'bar'  -e               Generate extended information for debugger/profiler  -z <file>        Load Zend extension <file>.  -l               Syntax check only (lint)  -m               Show compiled in modules  -i               PHP information  -r <code>        Run PHP <code> without using script tags <?..?>  -h               This help   args...          Arguments passed to script. Use -- args when first argument                    starts with - or script is read from stdin
로그인 후 복사

CLI SAPI 模块有以下三种不同的方法来获取您要运行的 PHP 代码:

?

?

在windows环境下,尽量使用双引号, 在linux环境下则尽量使用单引号来完成。


  1. PHP 运行指定文件。

    php my_script.php <span style="color: #3366ff;">php -f  "my_script.php"</span>
    로그인 후 복사

    以上两种方法(使用或不使用 -f 参数)都能够运行给定的 my_script.php 文件。您可以选择任何文件来运行,您指定的 PHP 脚本并非必须要以 .php 为扩展名,它们可以有任意的文件名和扩展名。

  2. 在命令行直接运行 PHP 代码。

    <span style="color: #3366ff;">php -r "print_r(get_defined_constants());"</span>
    로그인 후 복사

    在使用这种方法时,请您注意外壳变量的替代及引号的使用。

    注: 请仔细阅读以上范例,在运行代码时没有开始和结束的标记符!加上 -r 参数后,这些标记符是不需要的,加上它们会导致语法错误。

  3. 通过标准输入(stdin)提供需要运行的 PHP 代码。

    以上用法给我们提供了非常强大的功能,使得我们可以如下范例所示,动态地生成 PHP 代码并通过命令行运行这些代码:

    $ some_application | some_filter | php | sort -u >final_output.txt
    로그인 후 복사

?

以上三种运行代码的方法不能同时使用。

和所有的外壳应用程序一样,PHP 的二进制文件(php.exe 文件)及其运行的 PHP 脚本能够接受一系列的参数。PHP 没有限制传送给脚本程序的参数的个数(外壳程序对命令行的字符数有限制,但您通常都不会超过该限制)。传递给您脚本的参数可在全局变量 $argv 中获取。该数组中下标为零的成员为脚本的名称(当 PHP 代码来自标准输入获直接用 -r 参数以命令行方式运行时,该名称为“-”)。另外,全局变量 $argc 存有 $argv 数组中成员变量的个数(而非传送给脚本程序的参数的个数)。

只要您传送给您脚本的参数不是以 - 符号开头,您就无需过多的注意什么。向您的脚本传送以 - 开头的参数会导致错误,因为 PHP 会认为应该由它自身来处理这些参数。您可以用参数列表分隔符 -- 来解决这个问题。在 PHP 解析完参数后,该符号后所有的参数将会被原样传送给您的脚本程序。

# 以下命令将不会运行 PHP 代码,而只显示 PHP 命令行模式的使用说明:$ php -r 'var_dump($argv);' -hUsage: php [options] [-f] <file> [args...][...] # 以下命令将会把“-h”参数传送给脚本程序,PHP 不会显示命令行模式的使用说明:$ php -r "var_dump($argv);" -- -harray(2) {  [0]=>  string(1) "-"  [1]=>  string(2) "-h"}
로그인 후 복사

除此之外,我们还有另一个方法将 PHP 用于外壳脚本。您可以在写一个脚本,并在第一行以 #!/usr/bin/php 开头,在其后加上以 PHP 开始和结尾标记符包含的正常的 PHP 代码,然后为该文件设置正确的运行属性。该方法可以使得该文件能够像外壳脚本或 PERL 脚本一样被直接执行。

<span style="color: #000000;">#!/usr/bin/php<br><span style="color: #0000bb;"><?php<br>????var_dump</span><span style="color: #007700;">(</span><span style="color: #0000bb;">$argv</span><span style="color: #007700;">);<br></span><span style="color: #0000bb;">?></span> </span>

假设改文件名为 test 并被放置在当前目录下,我们可以做如下操作:

$ chmod 755 test$ ./test -h -- fooarray(4) {  [0]=>  string(6) "./test"  [1]=>  string(2) "-h"  [2]=>  string(2) "--"  [3]=>  string(3) "foo"}
로그인 후 복사

正如您所看到的,在您向该脚本传送以 - 开头的参数时,脚本仍然能够正常运行。

?

?

?

?

?

?

------------------------------------------命令选项-----------------------------------------------------

?

表格 23-3. 命令行选项

选项名称描 述
-s

显示有语法高亮色彩的源文件。

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

注: 该选项不能和 -r 参数同时使用。

-w

显示除去了注释和空格的源代码。

注: 该选项不能和 -r 参数同时使用。

-f

解析并运行给定的文件名。该参数为可选参数且可以不加,仅指明需要运行的文件名即可。

-v

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

$ php -vPHP 4.3.0-dev (cli), Copyright (c) 1997-2002 The PHP GroupZend Engine v1.3.0, Copyright (c) 1998-2002 Zend Technologies
로그인 후 복사
-c

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

$ php -c /custom/directory/ my_script.php $ php -c /custom/directory/custom-file.ini my_script.php
로그인 후 복사
-a

交互地运行 PHP。

-d

用该参数可以自行设置 php.ini 文件中设置变量的值,其语法为:

-d configuration_directive[=value]
로그인 후 복사

范例:

# Ommiting 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

为调试器等生成扩展信息。

-z

加载 Zend 扩展库。如果仅给定一个文件名,PHP 将试图从您系统扩展库的默认路径(在 Linux 系统下,该路径通常由 /etc/ld.so.conf 指定)加载该扩展库。如果您用一个绝对路径指定文件名,则系统的扩展库默认路径将不会被使用。如果用相对路径指定的文件名,PHP 则仅试图加载相对于当前目录的扩展库。

-l

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

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

注: 该参数不能和 -r 一同使用。

-m

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

$ php -m[PHP Modules]xmltokenizerstandardsessionposixpcreoverloadmysqlmbstringctype [Zend Modules]
로그인 후 복사
-i该命令行参数会调用 phpinfo() 函数,并打印出结果。如果 PHP 没有正常工作,我们建议您执行 php -i 命令来查看在信息表格之前或者对应的地方是否有任何错误信息输出。请注意输出的内容为 HTML 格式,因此输出的信息篇幅较大。
-r

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

注: 使用这种形式的 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,或者发邮件到 [email protected]

[email protected]?来转义字符时也可能碰到各种各样的问题,请您在使用时注意!

注: -rCLI SAPI 中有效,在 CGI SAPI 中无效。

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

?

PHP 的命令行模式能使得 PHP 脚本能完全独立于 WEB 服务器单独运行。如果您使用 Unix 系统,您需要在您的 PHP 脚本的最前面加上一行特殊的代码,使得它能够被执行,这样系统就能知道用什么样的程序要运行该脚本。在 Windows 平台下您可以将 php.exe.php 文件的双击属性相关联,您也可以编写一个批处理文件来用 PHP 执行脚本。为 Unix 系统增加的第一行代码不会影响该脚本在 Windows 下的运行,因此您也可以用该方法编写跨平台的脚本程序。以下是一个简单的PHP 命令行程序的范例。

例子 23-1. 试图以命令行方式运行的 PHP 脚本(script.php)

<span style="color: #000000;">#!/usr/bin/php<br><span style="color: #0000bb;"><?php<br><br></span><span style="color: #007700;">if (</span><span style="color: #0000bb;">$argc </span><span style="color: #007700;">!= </span><span style="color: #0000bb;">2 </span><span style="color: #007700;">|| </span><span style="color: #0000bb;">in_array</span><span style="color: #007700;">(</span><span style="color: #0000bb;">$argv</span><span style="color: #007700;">[</span><span style="color: #0000bb;">1</span><span style="color: #007700;">], array(</span><span style="color: #dd0000;">'--help'</span><span style="color: #007700;">, </span><span style="color: #dd0000;">'-help'</span><span style="color: #007700;">, </span><span style="color: #dd0000;">'-h'</span><span style="color: #007700;">, </span><span style="color: #dd0000;">'-?'</span><span style="color: #007700;">))) {<br></span><span style="color: #0000bb;">?><br></span><br>This is a command line PHP script with one option.<br><br>??Usage:<br>??<span style="color: #0000bb;"><?php </span><span style="color: #007700;">echo </span><span style="color: #0000bb;">$argv</span><span style="color: #007700;">[</span><span style="color: #0000bb;">0</span><span style="color: #007700;">]; </span><span style="color: #0000bb;">?></span> <option><br><br>??<option> can be some word you would like<br>??to print out. With the --help, -help, -h,<br>??or -? options, you can get this help.<br><br><span style="color: #0000bb;"><?php<br></span><span style="color: #007700;">} else {<br>????echo </span><span style="color: #0000bb;">$argv</span><span style="color: #007700;">[</span><span style="color: #0000bb;">1</span><span style="color: #007700;">];<br>}<br></span><span style="color: #0000bb;">?></span> </span>

在以上脚本中,我们用第一行特殊的代码来指明该文件应该由 PHP 来执行。我们在这里使用 CLI 的版本,因此不会有 HTTP 头信息输出。在您用 PHP 编写命令行应用程序时,您可以使用两个参数:$argc$argv。前面一个的值是比参数个数大 1 的整数(运行的脚本本身的名称也被当作一个参数)。第二个时包含有参数的数组,其第一个元素为脚本的名称,下标为数字 0($argv[0])。

在以上程序中我们检查了参数的个数是大于 1 个还是小于 1 个。即时参数是 --help-help-h-?,我们仍然打印出帮助信息,并同时动态输出脚本的名称。如果还收到了其它参数,我们也把它们显示出来。

如果您希望在 Unix 下运行以上脚本,您需要使得它成为可执行脚本,然后简单的运行 script.php echothisscript.php -h。在 Windows 下,您可以为此编写一个批处理文件:


@c:\php\cli\php.exe script.php %1 %2 %3 %4
로그인 후 복사
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25 : Myrise에서 모든 것을 잠금 해제하는 방법
4 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

Ubuntu 및 Debian용 PHP 8.4 설치 및 업그레이드 가이드 Ubuntu 및 Debian용 PHP 8.4 설치 및 업그레이드 가이드 Dec 24, 2024 pm 04:42 PM

PHP 8.4는 상당한 양의 기능 중단 및 제거를 통해 몇 가지 새로운 기능, 보안 개선 및 성능 개선을 제공합니다. 이 가이드에서는 Ubuntu, Debian 또는 해당 파생 제품에서 PHP 8.4를 설치하거나 PHP 8.4로 업그레이드하는 방법을 설명합니다.

CakePHP 날짜 및 시간 CakePHP 날짜 및 시간 Sep 10, 2024 pm 05:27 PM

cakephp4에서 날짜와 시간을 다루기 위해 사용 가능한 FrozenTime 클래스를 활용하겠습니다.

CakePHP 토론 CakePHP 토론 Sep 10, 2024 pm 05:28 PM

CakePHP는 PHP용 오픈 소스 프레임워크입니다. 이는 애플리케이션을 훨씬 쉽게 개발, 배포 및 유지 관리할 수 있도록 하기 위한 것입니다. CakePHP는 강력하고 이해하기 쉬운 MVC와 유사한 아키텍처를 기반으로 합니다. 모델, 뷰 및 컨트롤러 gu

CakePHP 파일 업로드 CakePHP 파일 업로드 Sep 10, 2024 pm 05:27 PM

파일 업로드 작업을 위해 양식 도우미를 사용할 것입니다. 다음은 파일 업로드의 예입니다.

CakePHP 유효성 검사기 만들기 CakePHP 유효성 검사기 만들기 Sep 10, 2024 pm 05:26 PM

컨트롤러에 다음 두 줄을 추가하면 유효성 검사기를 만들 수 있습니다.

CakePHP 로깅 CakePHP 로깅 Sep 10, 2024 pm 05:26 PM

CakePHP에 로그인하는 것은 매우 쉬운 작업입니다. 한 가지 기능만 사용하면 됩니다. cronjob과 같은 백그라운드 프로세스에 대해 오류, 예외, 사용자 활동, 사용자가 취한 조치를 기록할 수 있습니다. CakePHP에 데이터를 기록하는 것은 쉽습니다. log() 함수는 다음과 같습니다.

PHP 개발을 위해 Visual Studio Code(VS Code)를 설정하는 방법 PHP 개발을 위해 Visual Studio Code(VS Code)를 설정하는 방법 Dec 20, 2024 am 11:31 AM

VS Code라고도 알려진 Visual Studio Code는 모든 주요 운영 체제에서 사용할 수 있는 무료 소스 코드 편집기 또는 통합 개발 환경(IDE)입니다. 다양한 프로그래밍 언어에 대한 대규모 확장 모음을 통해 VS Code는

CakePHP 빠른 가이드 CakePHP 빠른 가이드 Sep 10, 2024 pm 05:27 PM

CakePHP는 오픈 소스 MVC 프레임워크입니다. 이를 통해 애플리케이션 개발, 배포 및 유지 관리가 훨씬 쉬워집니다. CakePHP에는 가장 일반적인 작업의 과부하를 줄이기 위한 여러 라이브러리가 있습니다.

See all articles