PHP cli和PHP cgi之间的区别是什么?

PHP cli和PHP cgi之间的区别是什么?,php,cgi,Php,Cgi,我刚刚在笔记本电脑服务器的bin文件夹中找到了两个可执行文件,php cgi.exe和php.exe。我正在学习PHP,无法理解其中的区别。它们之间有什么区别?PHP CLI是PHP的命令行界面(例如,用于创建独立应用程序) PHP CGI是PHP的通用网关接口(例如,用于web应用程序)CLI用于命令行脚本,CGI用于web请求PHP CGI用于web服务器。除此之外,它还为您处理HTTP头 CLI版本旨在在命令行上运行(因此称为“命令行界面”)。此命令不处理头文件或任何其他与服务器相关的内容

我刚刚在笔记本电脑服务器的
bin
文件夹中找到了两个可执行文件,
php cgi.exe
php.exe
。我正在学习PHP,无法理解其中的区别。它们之间有什么区别?

PHP CLI是PHP的命令行界面(例如,用于创建独立应用程序)

PHP CGI是PHP的通用网关接口(例如,用于web应用程序)

CLI用于命令行脚本,CGI用于web请求

PHP CGI
用于web服务器。除此之外,它还为您处理HTTP头


CLI版本旨在在命令行上运行(因此称为“命令行界面”)。此命令不处理头文件或任何其他与服务器相关的内容。

php cli
用于在命令行上运行php
phpcgi
为您做额外的事情,比如HTTP头和某些安全性修改

已经说过,请考虑安装FASCGI模块并使用。这应该比PHP cgi运行PHP快得多。我相信标准的ApacheFastCGI模块是

以下是CLI和CGI之间最重要的区别:

  • 与CGI SAPI不同,默认情况下CLI不向输出写入头
  • 有一些php.ini指令被CLI覆盖 SAPI,因为它们在shell环境中没有意义:
    • html\u错误:CLI默认值为FALSE
    • 隐式\u刷新:CLI默认值为TRUE
    • 最大执行时间:CLI默认值为0(无限制)
    • 寄存器_argc_argv:CLI默认值为TRUE
  • 您可以在脚本中使用命令行参数!变量 “$argc”为您提供了传递给 应用数组“$argv”提供了一个实际 论据
  • 为shell环境定义了3个新常量: 标准,标准,标准。它们都是的文件处理程序 对应的外壳设备。例如,STDIN是的处理程序 福彭('php://stdin“,‘r’”。所以,你可以从STDIN读一行,比如 这:$strLine=trim(fgets(STDIN));。STDIN已为定义 您可以通过PHP CLI访问
  • PHP CLI不会将当前目录更改为 执行脚本。脚本的当前目录将是 键入PHP CLI命令的目录
  • PHP CLI有许多有用的选项。哪个会 允许您获得有关php设置的一些有价值的信息 php脚本或以不同模式运行它
  • 在PHP5中,CLI和CGI文件名发生了一些变化。在PHP5中, CGI版本被重命名为php-CGI.exe(以前是php.exe),并且 CLI版本现在位于主目录中(以前为 cli/php.exe)
  • 在PHP5中还引入了一种新模式:PHP-win.exe。这是 与CLI版本相同,只是php win不输出任何内容 因此不提供控制台(屏幕上不显示“dos框”)。 这种行为类似于PHP GTK
这可能会让您更广泛地了解它们的区别:

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服务器与PHP交互

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


mod_php:运行php的Apache模块

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


mod_SuPHP:与mod_php类似,但可以更改进程运行时所在的用户/组


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

可能存在Hi的重复,您知道它是否有超时吗?我的意思是,如果需要运行一个需要很长时间才能运行的脚本。在CLI上运行是一个好选项吗?是的,当然。在CLI中,max_execution_time:默认值为0(无限制)。PHP是PHP超文本预处理器。这真的是答案吗?!我不这么认为