> 백엔드 개발 > PHP 튜토리얼 > PHP의 cli 명령에 사용자 정의 매개변수를 전달하는 방법 소개

PHP의 cli 명령에 사용자 정의 매개변수를 전달하는 방법 소개

WBOY
풀어 주다: 2016-07-25 08:58:51
원래의
1583명이 탐색했습니다.
不论是编译自源代码的版本还是预创建的php版本,都在默认情况下带有一个PHP可执行文件。这个可执行文件可以被用来运行命令行的PHP程序。

要在系统中找到这个可执行文件,要遵照下面的步骤: Windows :放在PHP主安装目录下,文件名是php.exe或者(在老版本的PHP里)是php-cli.exe。 Linux : 保存在PHP安装目录的bin/子目录下。

注意:CLI模式和CGI模式运行时用的PHP.INI并非同一套配置,需要单独配置。 无论在哪个系统中,都需要对它进行测试,以保证它能够正常运行,方法是用-v参数调用它:

shell> /path/php.exe -v
PHP 5.0.0 (cli) (built: Jun 1 2005 18:32:10)
Copyright (c) 1997-2004 The PHP Group
Zend Engine v2.0.0, Copyright (c) 1998-2004 Zend Technologies
로그인 후 복사
它应该会返回PHP的版本号。

使用CLI命令 一个简单的PHP CLI程序,命名hello.php

<?php
echo "Hello from the CLI";
?>
로그인 후 복사
现在,试着在命令行提示符下运行这个程序,方法是调用CLI可执行文件并提供脚本的文件名:
shell> /path/php.exe /example/hello.php
Hello from the CLI

로그인 후 복사
使用标准的输入和输出 PHP CLI会定义三个常量,以便让在命令行提示符下与解释器进行交互操作更加容易。这些常量见下表
常量 说明
STDIN 标准的输入设备
STDOUT 标准的输出设备
STDERR 标准的错误设备

자신의 PHP 스크립트에서 이 세 가지 상수를 사용하여 사용자 입력을 받아들이거나 처리 및 계산 결과를 표시할 수 있습니다.

사용 예:

<?php
// ask for input
fwrite(STDOUT, "Enter your name: ");

// get input
$name = trim(fgets(STDIN));

// write input back
fwrite(STDOUT, "Hello, $name!");
?>

output:

D:\>\wamp\bin\php\php5.3.0\php.exe  \tools\index.php
Enter your name: kkk
Hello, kkk!

로그인 후 복사
이 스크립트에서 fwrite() 함수는 먼저 표준 출력 장치에 사용자 이름을 묻는 메시지를 씁니다. 그런 다음 표준 입력 장치에서 얻은 사용자 입력 정보를 PHP 변수로 읽어 문자열로 결합합니다. 그런 다음 fwrite()를 사용하여 문자열을 표준 출력 장치에 인쇄합니다. 명령줄 사용자 정의 변수1【$argv|$argc】 프로그램 실행 방식을 변경하기 위해 명령줄에 프로그램 인수를 입력하는 것이 일반적입니다. CLI 프로그램으로도 이 작업을 수행할 수 있습니다. PHP CLI에는 이 목적을 위해 특별히 설계된 두 가지 특수 변수가 함께 제공됩니다. 하나는 $argv 변수로, 명령줄을 통해 PHP 스크립트에 전달된 매개변수를 별도의 배열 요소로 저장합니다. 다른 하나는 $argv 배열의 요소 수를 저장하는 데 사용되는 $argc 변수입니다. 사용 예:
<?php
print_r($argv);
?>

output:

D:\>\wamp\bin\php\php5.3.0\php.exe  \tools\index.php bac ddd
Array
(
    [0] => \tools\index.php
    [1] => bac
    [2] => ddd
)

로그인 후 복사
출력에서 볼 수 있듯이 index.php에 전달된 값은 자동으로 $argv에 배열 요소로 나타납니다. $argv의 첫 번째 인수는 항상 스크립트 자체의 이름입니다.

참고: Console_Getopt PEAR 클래스를 사용하여 PHP에 더 복잡한 명령줄 매개변수를 추가할 수도 있습니다.

명령줄 사용자 정의 변수2 [매개변수를 받으려면 Console_Getopt 사용]

참고: 이 변수는 Register_argc_argv가 활성화된 경우에만 사용할 수 있습니다

getopt($option, $longopts) // 첫 번째 $옵션은 -h vb를 수신하고 두 번째 매개변수는 --require sss를 수신합니다

사용예

<?php
        $shortopts = "";
        $shortopts .= "f:";  // Required value
        $shortopts .= "v::"; // Optional value
        $shortopts .= "abc"; // These options do not accept values
        $longopts = array(
            "required:", // Required value
            "optional::", // Optional value
            "option", // No value
            "opt", // No value
        );
        $options = getopt($shortopts, $longopts);
        var_dump($options);
?> 

ouput:

D:\>\wamp\bin\php\php5.3.0\php.exe  \tools\index.php -f "value for f" -v -a --re
quired value --optional="optional value" --option will
array(6) {
  ["f"]=>
  string(11) "value for f"
  ["v"]=>
  bool(false)
  ["a"]=>
  bool(false)
  ["required"]=>
  string(5) "value"
  ["optional"]=>
  string(14) "optional value"
  ["option"]=>
  bool(false)
}
로그인 후 복사
명령줄 변수3 [CLI 매개변수 사용]

명령줄을 사용하여 PHP 스크립트 매개변수를 전달하는 것 외에도 PHP CLI 매개변수를 전달하여 작동 방식을 변경할 수도 있습니다.

参数 说明
-a 交互式运行Run interactively
-c path 从path读取php的.ini文件
-n 不用读取php的.ini文件就直接运行
-m 列出经过编译的模块
-i 显示有关PHP构建的信息
-l 检查PHP脚本的句法
-s 以彩色方式显示源代码
-w 显示去掉注释之后的源代码
-h 显示帮助

交互模式 你还可以以交互方式使用PHP CLI,也就是输入命令,马上获得结果。 要得到这种效果,只需要使用一个参数调用CLI可执行文件就行了,就像下面这样:

shell> /path/to/php -a
Interactive mode enabled
<?php
echo mktime();
1121187283
echo 2+2;
4
exit();
shell>
로그인 후 복사
或者,你可以不使用-a参数就调用CLI可执行文件,直接输入完整的脚本或者代码段。

-D来结束代码段,并让CLI来执行它。见下面的例子:

shell> /path/to/php
<?php
echo date("d-M-Y h:i:s", time());
?>
<Ctrl-D>
12-Jul-2005 06:54:04
로그인 후 복사


원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿