PHP CLI

与普遍看法相反,PHP 不仅仅是一个 Web 服务器语言。PHP 还可以用来创建常规程序,例如 GUI 应用程序、shell 脚本,甚至守护进程等。

好处是,所有(或大部分)常用的 PHP 库都可以在 PHP CLI 程序中使用。例如,MySQL、XML 等,基本上都可以继续使用。

示例 PHP-CLI 程序

以下是一个简单的 PHP-CLI 程序示例:

<?php
  print('Hello World');
?>

如果我们将其保存为 helloworld.php,然后通过以下命令运行这个 PHP CLI 程序:

php helloworld.php

这将输出:

Hello World

PHP 与 PHP CLI 的区别

PHP 和 PHP CLI 之间有一些重要的区别。以下是它们的列表:

  • 没有 $_GET 超全局数组。
  • 没有 $_POST 超全局数组。
  • 没有 $_COOKIE 超全局数组。
  • 当你执行 print 时,输出会发送到标准输出,而不是 Web 浏览器。
  • 你可以通过 $argv 变量获取命令行参数。
  • 你可以通过 $argc 变量获取命令行参数的数量。

使用 argvargc

与许多程序一样,在 PHP 中也需要访问用于调用程序的命令行变量。为此,PHP 提供了两个变量:

  • register_globals = on 时,可以使用:

    • $argv
    • $argc
  • register_globals = off 时,可以使用:

    • $_SERVER['argv']
    • $_SERVER['argc']

(对于熟悉 Bash、C 或 C++ 的人来说,这对变量会非常熟悉。)

以下是一个使用 $argc$argv 变量的程序示例:

<?php 
   print('ARGC = ' . $argc ."\n\n");
   foreach ($argv as $k=>$v) {
     print("ARGV[$k] = $v\n");
   }
?>
<?php 
   print('ARGC = ' . $_SERVER['argc'] ."\n\n");
   foreach ($_SERVER['argv'] as $k => $v) {
     print("ARGV[$k] = $v\n");
   }
?>

如果我们将这个 PHP 程序保存为 test1.php,并使用以下命令运行:

php test1.php apple orange banana pineapple

那么输出将是:

ARGC = 5

ARGV[0] = test1.php
ARGV[1] = apple
ARGV[2] = orange
ARGV[3] = banana
ARGV[4] = pineapple

(请注意,和 Bash、C、C++ 程序一样,$argv 的第一个元素是程序的名称。)

最后修改: 2025年01月10日 星期五 02:51