CLI和CGI之间的区别
PHP可以在不同的环境中运行。最常见的环境是 CGI,它在 PHP 处理 HTTP 请求时运行。然而,也可以从终端运行PHP脚本,在这种情况下,它是一个所谓的CLI(命令行界面)任务。
CLI和CGI之间最重要的区别是
- 与
CGI SAPI不同,CLI默认不向输出写入任何头文件。 - 有一些
php.ini指令在CLI SAPI中被覆盖,因为它们在shell环境中没有意义。 html_errors: CLI默认为FALSE。implicit_flush: CLI默认值为TRUE。- max_execution_time": CLI默认值为 "0"(无限)。
register_argc_argv: CLI默认值为TRUE。- 该脚本可以接受命令行参数
$argc变量给你传递给应用程序的参数数量。$argv字段给你一个实际参数的数组 - 为shell环境定义了3个新的常量:
STDIN、STDOUT、STDERR。都是相应的壳设备的文件处理程序。例如,STDIN是fopen('php://stdin', 'r')的一个文件处理程序。所以你可以像这样从STDIN中读取一行:$strLine = trim(fgets(STDIN));。STDIN已经用PHP CLI为你定义好了。 - PHP CLI不会将当前目录改为正在执行的脚本的目录。脚本的当前目录将是运行PHP CLI命令的目录。
- PHP CLI有许多有用的选项。它允许你获得一些关于你的php设置的有价值的信息,你的php脚本或在不同模式下运行它。
- 在 PHP 5 中,CLI 和 CGI 的文件名有一些变化。在 PHP 5 中,CGI 版本被重新命名为
php-cgi.exe(以前是php.exe),CLI 版本现在位于主目录中(以前是cli/php.exe)。 - 在 PHP 5 中还引入了一种新的模式:
php-win.exe。这等同于CLI版本,只是在php-win中没有打印任何东西,因此没有提供控制台(屏幕上没有显示 "dos box")。这种行为与PHP GTK相似。