对你来说一个非常基本的问题。我在笔记本电脑上的WAMP服务器的bin文件夹中发现了两个可执行文件php-cgi.exe
和php.exe
。我正在学习PHP,无法找出差异。他们之间有什么不同?php cli和php cgi有什么区别?
回答
PHP CLI为PHP命令行接口(例如,用于创建独立的应用程序)
PHP CGI是PHP的公共网关接口(例如,用于web应用)
并且PHP是Php超文本预处理器。这真的是一个答案吗?!我不这么认为 – Trix 2016-06-21 10:47:15
CLI为命令行脚本,CGI用于网络请求
php-cgi
适用于网络服务器。除其他外,它为您处理HTTP标头。
CLI版本旨在运行在命令行上(因此称为“命令行界面”)。这一个不处理标题或任何其他服务器相关的东西。
php-cli
用于在命令行上运行PHP。 php-cgi
会为您做额外的事情,例如HTTP标头和某些安全修改。
话虽如此,请考虑安装FastCGI模块并使用PHP's FastCGI interface。这应该比php-cgi更快地运行PHP。我相信标准的Apache FastCGI模块是。
从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”为您提供了一个实际的 参数数组
- 有3个新的常量为shell环境定义: 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框”)。 此行为与PHP GTK类似。
你好,你知道它是否有一些超时?我的意思是如果需要运行花费太长时间运行的脚本。在CLI上运行它是一个很好的选择吗? – 2016-01-22 12:22:09
是的,当然。在CLI中max_execution_time:默认为0(无限制)。 – 2016-01-25 15:19:59
这可能给你他们的差异更广泛的理解:
CGI:(通用网关接口),它是一种规范“协议”的Web服务器和CGI程序之间传送信息。
CGI程序是任何旨在接受和返回符合CGI规范的数据的程序。
基本上,这是一种在HTTP请求发出时运行服务器端脚本(PHP,Perl,Python,...)的方法。
与其他选择相比,CGI速度非常慢。
的FastCGI:是一个更好的CGI。
快速CGI是一种结果更快的不同方法。
这是一个只有几个扩展名的CGI。
FastCGI的实现不再支持PHP-FPM。
PHP-FPM:(FastCGI进程管理器),它比旧的FastCGI更好的FastCGI实现。
它作为独立的FastCGI服务器运行。
一般来说,它是用于Web服务器(Apache,Nginx ..)的PHP接口,允许Web Server与PHP进行交互。
不像PHP-CLI这是PHP的命令行界面,允许用户通过终端与PHP进行交互。
mod_php的: Apache模块运行PHP。
它直接作为Web服务器的一部分在Web服务器内执行PHP脚本,而不与CGI程序通信。
mod_SuPHP:类似于mod_php的,但可以改变它的用户/组的过程下运行。
基本上它解决了一些与权限相关的mod_php问题。
- 1. php 4和php 5有什么区别?
- 2. mod_php和cgi php脚本有什么区别?
- 3. JSP,PHP,HTML5和JavaScript有什么区别?
- 4. Php:|有什么区别?和||运营商
- 5. 在PHP中!==和!=有什么区别?
- 6. PHP中。=和+ =有什么区别?
- 7. phpinfo();有什么区别?和php -i?
- 8. PHP和Java有什么区别?
- 9. PHP中的 - >和::有什么区别?
- 10. Managed C++和C++/CLI有什么区别?
- 11. Angular CLI和quickstart有什么区别?
- 12. angularjs和angular cli有什么区别?
- 13. C++和C++ CLI有什么区别
- 14. eclipse中运行php脚本和php网页有什么区别?
- 15. IIS和PHP的PHP托管有什么区别?
- 16. php 5.3和php 4.9有什么具体区别?
- 17. 这些PHP变量有什么区别?
- 18. solr PHP客户端有什么区别?
- 19. <?或<?php ---有什么区别?
- 20. ==和===有什么区别?
- 21. 在PHP中的内存映射文件,有什么区别php:// temp和php:// memory
- 22. PHP中的“和”和“&&”运算符有什么区别吗?
- 23. 有什么区别`和$(Bash中有什么区别?
- 24. PHP中的session_unset()和session_destroy()有什么区别?
- 25. PHP中“GLOBAL”和“STATIC”变量有什么区别?
- 26. PHP&mysqli:持久连接和交互有什么区别?
- 27. 有什么区别使用<?php ... ?>和<? ... ?>
- 28. 包含和必需的文件在php中有什么区别?
- 29. PHP中的ADOdb和PDO有什么区别?
- 30. include()和在PHP中调用函数有什么区别?
[从命令行执行php和从http端执行php之间的区别](http://stackoverflow.com/questions/3016281/difference-between-executing-php-from-the-commandline-and-from -http端) – mario 2012-02-16 17:12:02
@mario你怎么找到重复?我找不到任何重复。 – user1208865 2012-02-16 17:18:17