不论是编译自源代码的版本还是预创建的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会定义三个常量,以便让在命令行提示符下与解释器进行交互操作更加容易。这些常量见下表
자신의 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 매개변수를 전달하여 작동 방식을 변경할 수도 있습니다.
交互模式 你还可以以交互方式使用PHP CLI,也就是输入命令,马上获得结果。 要得到这种效果,只需要使用一个参数调用CLI可执行文件就行了,就像下面这样: shell> /path/to/php -a Interactive mode enabled <?php echo mktime(); 1121187283 echo 2+2; 4 exit(); shell>或者,你可以不使用-a参数就调用CLI可执行文件,直接输入完整的脚本或者代码段。 用 shell> /path/to/php <?php echo date("d-M-Y h:i:s", time()); ?> <Ctrl-D> 12-Jul-2005 06:54:04 |