首页vns威尼斯城官网登入 › 以便入门学习者查阅方便vns威尼斯城官网登入:,大多数的Web服务器都不能解析PHP代码

以便入门学习者查阅方便vns威尼斯城官网登入:,大多数的Web服务器都不能解析PHP代码

网上对于FastCGI与mod_php的知识比较杂乱而不全面,故在此整理一下,以便入门学习者查阅方便。

背景

PHP最常用的方式是以模块的方式(mod_php)运行在Apache中,也是Apache运行PHP的默认方式;但在Nginx中,Nginx又使用的是PHP-FPM,但是PHP-FPM到底是个什么东东?跟php有什么关系?今天我们一起来探究一番

背景

PHP最常用的方式是以模块的方式(mod_php)运行在Apache中,也是Apache运行PHP的默认方式;但在Nginx中,Nginx又使用的是PHP-FPM,但是PHP-FPM到底是个什么东东?跟php有什么关系?今天我们一起来探究一番。

vns威尼斯城官网登入 1

PHP处理器(PHP handlers)

首先需要记住的是,任何一种Web服务器(Apache、Nginx等)都是被设计成向用户发送html、图片等静态资源的,Web服务器自身并不能解释任何动态脚本(PHP、Python等)
PHP处理器就是用来解释Web应用中的PHP代码,并将它解释为HTML或其他静态资源,然后将解析的结果传给Web服务器,最后再由Web服务器发送给用户
大多数的Web服务器都不能解析PHP代码,因此它需要一个能解析PHP代码的程序,这就是PHP处理器
现在我们知道了,Apache与Nginx都需要PHP处理器来处理php代码,那么怎么连接上服务器与php处理器呢?也就是说服务器与php处理器如何通信?
答案是通过SAPI(Server Application Programming Interface
服务器端应用编程端口),简单来说,SAPI指的是PHP具体应用的编程接口,
就像PC一样,无论安装哪些操作系统,只要满足了PC的接口规范都可以在PC上正常运行,
PHP脚本要执行有很多种方式,通过Web服务器,或者直接在命令行下,也可以嵌入在其他程序中,有兴趣大家可以研究PHP内核
我们这里继续讨论PHP最常用的SAPI提供的2种连接方法:mod_php和mod_fastcgi

PHP处理器(PHP handlers)

首先需要记住的是,任何一种Web服务器(Apache、Nginx等)都是被设计成向用户发送html、图片等静态资源的,Web服务器自身并不能解释任何动态脚本(PHP、Python等)。

PHP处理器就是用来解释Web应用中的PHP代码,并将它解释为HTML或其他静态资源,然后将解析的结果传给Web服务器,最后再由Web服务器发送给用户。

大多数的Web服务器都不能解析PHP代码,因此它需要一个能解析PHP代码的程序,这就是PHP处理器。

现在我们知道了,Apache与Nginx都需要PHP处理器来处理php代码,那么怎么连接上服务器与php处理器呢?也就是说服务器与php处理器如何通信?

答案是通过SAPI(Server Application Programming Interface
服务器端应用编程端口),简单来说,SAPI指的是PHP具体应用的编程接口,
就像PC一样,无论安装哪些操作系统,只要满足了PC的接口规范都可以在PC上正常运行,
PHP脚本要执行有很多种方式,通过Web服务器,或者直接在命令行下,也可以嵌入在其他程序中,有兴趣大家可以研究PHP内核。

我们这里继续讨论PHP最常用的SAPI提供的2种连接方法:mod_php和mod_fastcgi。

mod_php模式

咱们回顾一下,Apache是怎么能够识别php代码的?是不是Apache的配置文件httpd.conf中加上或者修改这样几句:
1234567

//添加LoadModule php5_module modules/libphp5.soAddType
application/x-httpd-php .php//修改<IfModule dir_module>
DirectoryIndex index.php index.html index.htm
index.html</IfModule>

也即php作为Apache的一个子模块来运行,当通过web访问php文件时,Apache就会调用php5_module来解析php代码
配置加载mod_php模块后,php便是Apahce进程本身一部分,每个新的Apache子进程都会加载此模块

mod_php模式

咱们回顾一下,Apache是怎么能够识别php代码的?是不是Apache的配置文件httpd.conf中加上或者修改这样几句:

//添加
LoadModule php5_module modules/libphp5.so
AddType application/x-httpd-php .php
//修改
<IfModule dir_module>
DirectoryIndex index.php index.html index.htm index.html
</IfModule>

也即php作为Apache的一个子模块来运行,当通过web访问php文件时,Apache就会调用php5_module来解析php代码。

配置加载mod_php模块后,php便是Apahce进程本身一部分,每个新的Apache子进程都会加载此模块。

mod_fastcgi模式

我们先看PHP-FPM官网的说明
PHP-FPM - A simple and robust FastCGI Process Manager for PHPPHP-FPM
(FastCGI Process Manager) is an alternative PHP FastCGI implementation
with some additional features useful for sites of any size, especially
busier sites.

PHP-FPM是一个PHP的FastCGI进程管理器,解释的非常简单。这说明PHP-FPM是辅助mod_fastcgi模式进行工作的,然而FastCGI又是个什么东西?管理着什么进程?

mod_fastcgi模式

我们先看PHP-FPM官网的说明:

PHP-FPM – A simple and robust FastCGI Process Manager for PHP
PHP-FPM (FastCGI Process Manager) is an alternative PHP FastCGI
implementation with some additional features useful for sites of any
size, especially busier sites.

PHP-FPM是一个PHP的FastCGI进程管理器,解释的非常简单。这说明PHP-FPM是辅助mod_fastcgi模式进行工作的,然而FastCGI又是个什么东西?管理着什么进程?

什么是CGI?

CGI(Common Gateway Interface)
是WWW技术中最重要的技术之一,有着不可替代的重要地位
CGI是外部应用程序(CGI程序)与Web服务器之间的接口标准,是在CGI程序和Web服务器之间传递信息的规程
CGI规范允许Web服务器执行外部程序,并将它们的输出发送给Web浏览器,CGI将Web的一组简单的静态超媒体文档变成一个完整的新的交互式媒体
说白了,CGI是一种外部应用程序(CGI程序)与Web服务器的协议,CGI是为了保证Server传递过来的数据是标准格式

转载本站文章请注明出处:vns威尼斯城官网登入 http://www.tiec-ccpittj.com/?p=4706

上一篇:

下一篇:

相关文章