PHP cli 和 PHP cgi 有什么区别?

2022-08-30 10:32:03

我刚刚找到了两个可执行文件,并在笔记本电脑上WAMP服务器的文件夹中。我正在学习PHP,无法弄清楚其中的区别。它们之间有什么区别?php-cgi.exephp.exebin


答案 1

http://www.php-cli.com/php-cli-cgi.shtml

以下是 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。它们都是对应 shell 设备的文件处理程序。例如,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框”)。此行为类似于 PHP GTK。

答案 2

这可能会让您更广泛地了解它们的差异:

CGI:(通用网关接口)它是一种规范“协议”,用于在Web服务器和CGI程序之间传输信息。

CGI 程序是旨在接受和返回符合 CGI 规范的数据的任何程序。

基本上,这是一种在HTTP请求到来时运行服务器端脚本(PHP,Perl,Python,...)的方法。

与其他替代品相比,CGI非常慢。


FastCGI:是一个更好的CGI。

快速CGI是一种不同的方法,结果更快。

它是一个只有几个扩展的CGI。

FastCGI实现不再可用,取而代之的是PHP-FPM。


PHP-FPM:(FastCGI Process Manager),它是比旧的FastCGI更好的FastCGI实现。

它作为独立的 FastCGI 服务器运行。

一般来说,它是Web服务器(Apache,Nginx..)的PHP接口,允许Web Server与PHP交互。

PHP-CLI不同,PHP-CLI是PHP的命令行界面,允许用户通过终端与PHP进行交互。


mod_php:一个运行PHP的Apache模块。

它直接在Web服务器内部执行PHP脚本,作为Web服务器的一部分,而无需与CGI程序通信。


mod_SuPHP:类似于mod_php,但可以更改运行进程的用户/组。

基本上,它解决了与权限相关的一些mod_php问题。


推荐