PHP Manual
/
服务器管理

CLI和CGI之间的区别

15. 10. 2021

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个新的常量:STDINSTDOUTSTDERR。都是相应的壳设备的文件处理程序。例如,STDINfopen('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相似。

Jan Barášek   Více o autorovi

Autor článku pracuje jako seniorní vývojář a software architekt v Praze. Navrhuje a spravuje velké webové aplikace, které znáte a používáte. Od roku 2009 nabral bohaté zkušenosti, které tímto webem předává dál.

Rád vám pomůžu:

Související články

1.
4.
Status:
All systems normal.
2024