Window下PHP三种运行方式图文详解,window下的php是不是单进程的?

PHP运行目前为止主要有三种方式: 
a、以模块加载的方式运行,初学者可能不容易理解,其实就是将PHP集成到Apache服务器,以同一个进程运行。 
b、以CGI的方式运行,CGI英文叫做公共网关接口,就是Apache在遇到PHP脚本的时候会将PHP程序提交给CGI应用程序(php-cgi.exe)解释,解释之后的结果返回给Apache,然后再相应请求的用户。 
c、以FastCGI的方式运行。这种形式是CGI的加强版本,CGI是单进程,多线程的运行方式,程序执行完成之后就会销毁,所以每次都需要加载配置和环境变量fork-and-execute(创建-执行)。而FastCGI则不同,FastCGI 像是一个常驻 (long-live) 型的 CGI,它可以一直执行着,只要激活后,不会每次都要花费时间去 fork 一次。FastCGI进程管理器自身初始化,启动多个CGI解释器进程 (在任务管理器中可见多个php-cgi.exe)并等待来自Web Server的连接。


1、无论上述哪种方式运行下面的配置通常都会加上,解压PHP安装包到c:/PHP5/,重命名PHP.ini-recommend文件为PHP.ini,分别寻找如下字段编辑,去除前面的分号(注意不要去错分号,好多是注释信息,仔细辨认)。

代码如下:
error_reporting = E_ALL //开启报错,便于程序员查错 line 342 
display_errors = On //显示错误 line 373 
extension_dir = "C:/php5/ext" //php的扩展选项文件所在的目录 line 542 
date.timezone = Asia/shanhai //时区配置  line 716 

2、以模块的方式运行,在Apache(C:/Program Files/Apache Software Foundation/Apache2.2/conf)的配置文件里添加如下配置

代码如下:
LoadModule php5_module "C:/php5/php5apache2_2.dll" //大约line 127 
PHPinidir "C:/php5/php.ini" 
//修改配置 
DirectoryIndex index.html index.php//追加index.php 
AddType application/x-httpd-php .php //line 408左右添加 

接着我们在apache的根目录下面,默认C:/Program Files/Apache Software Foundation/Apache2.2/htdocs新建php文件index.php,编辑添加如下代码:

代码如下:
<?php 
phpinfo(); 
?> 

然后我们在地址栏输入http://localhost/会出现如下界面:注意红色部分和配置的关系

3、cgi的方式运行,需要做如下的配置首先php配置文件

代码如下:
cgi.force_redirect = 0 //本来是 1 并且去掉注释符号; 

修改apache的配置,去掉原来的模块配置 
代码如下:

AddType application/x-httpd-php .php 
LoadModule php5_module "C:/php5/php5apache2_2.dll" 
PHPinidir "C:/php5/php.ini" 

=>加入以下配置

代码如下:
AddHandler cgi-script .cgi // line 396 

然后我们在目录C:/Program Files/Apache Software Foundation/Apache2.2/cgi-bin新建一个cgi文件test.cgi编写如下代码: 
代码如下:

#!c:/php5/php-cgi.exe 
<? 
php php phpinfo(); 
?> 

如果同时打开多个则会有很多php-cgi.exe,并且在执行完成之后消失:

4、PHP的fastcig方式运行,首先需要去下载fastcgi模块,默认是没有带这个模块的,而cgi是自带的;

下载地址http://httpd.apache.org/mod_fcgid/;

解压复制其中的mod_fcgid.so和mod_fcgid.pdb,接下来做如下的配置: 
代码如下:

LoadModule fcgid_module modules/mod_fcgid.so // line 128追加 
FcgidInitialEnv PHPRC "c:/php5" //php配置文件 line 129追加 
AddHandler fcgid-script .php //添加句柄 即后缀 什么样的文件需要fastcgi解释 line 407追加 
FcgidWrapper "c:/php5/php-cgi.exe" .php //解释器路径 line 408 
Options Indexes FollowSymLinks ExecCGI //line 221 追加 ExecCGI 意思是目录允许执行CGI脚本 

是否成功安装,只需要做个PHP文件检查就可以了,我们就用上面的index.php文件:

PHP初学者一定要亲自试验一下,这篇教程具有一定的难度,要反复思考才能理解其中的意思,涉及到一些专业知识,当然你暂时可以直接使用模块运行方式,等自己对PHP有了一定的理解之后可以再回头看看这篇文章

------------------------------

本人微信公众帐号: 心禅道(xinchandao)

本人微信公众帐号:双色球预测合买(ssqyuce)

Window下PHP三种运行方式图文详解,window下的php是不是单进程的?的更多相关文章

  1. Hadoop集群搭建安装过程(三)(图文详解---尽情点击!!!)

    Hadoop集群搭建安装过程(三)(图文详解---尽情点击!!!) 一.JDK的安装 安装位置都在同一位置(/usr/tools/jdk1.8.0_73) jdk的安装在克隆三台机器的时候可以提前安装 ...

  2. C++的三种继承方式详解以及区别

    目录 目录 C++的三种继承方式详解以及区别 前言 一.public继承 二.protected继承 三.private继承 四.三者区别 五.总结 后话 C++的三种继承方式详解以及区别 前言 我发 ...

  3. python selenium 三种等待方式详解[转]

    python selenium 三种等待方式详解   引言: 当你觉得你的定位没有问题,但是却直接报了元素不可见,那你就可以考虑是不是因为程序运行太快或者页面加载太慢造成了元素不可见,那就必须要加等待 ...

  4. vmware虚拟机三种网络模式详解_转

    原文来自http://note.youdao.com/share/web/file.html?id=236896997b6ffbaa8e0d92eacd13abbf&type=note 由于L ...

  5. Vmware虚拟机三种网络模式详解

    原文来自http://note.youdao.com/share/web/file.html?id=236896997b6ffbaa8e0d92eacd13abbf&type=note 我怕链 ...

  6. 四、Vmware虚拟机三种网络模式详解

    转载自: http://note.youdao.com/share/web/file.html?id=236896997b6ffbaa8e0d92eacd13abbf&type=note 1. ...

  7. 【转】VMware虚拟机三种网络模式详解

    由于Linux目前很热门,越来越多的人在学习Linux,但是买一台服务放家里来学习,实在是很浪费.那么如何解决这个问题?虚拟机软件是很好的选择,常用的虚拟机软件有VMware Workstations ...

  8. Vmware虚拟机三种网络模式详解(转)

    原文来自http://note.youdao.com/share/web/file.html?id=236896997b6ffbaa8e0d92eacd13abbf&type=note 我怕链 ...

  9. Vmware虚拟机三种网卡模式详解

    由于Linux目前很热门,越来越多的人在学习linux,但是买一台服务放家里来学习,实在是很浪费.那么如何解决这个问题?虚拟机软件是很好的选择,常用的虚拟机软件有vmware workstations ...

随机推荐

  1. springMVC 报错:Unknown return value type: java.lang.Integer

    controller层返回值类型为Integer,运行报错: Unknown return value type: java.lang.Integer 解决办法:在此方法上写上注解 @Response ...

  2. Pyqt图标下载网站

    下载地址: https://www.easyicon.net/ 1.程序中图标建议使用32x32的PNG格式. 2.pyinstaller打包中图标建议使用32x32的ICO格式.

  3. 基于pandas python sklearn 的美团某商家的评论分类(文本分类)

    美团店铺评价语言处理以及分类(NLP) 第一篇 数据分析部分 第二篇 可视化部分, 本文是该系列第三篇,文本分类 主要用到的包有jieba,sklearn,pandas,本篇博文主要先用的是词袋模型( ...

  4. 8.26 js

    2018-8-26 20:35:53 这两天周末,一直在看苏东坡传! 明天正常学python 用心学!

  5. C#调用C++ DLL的方式

    动态链接库(DLL)是一个包含可由多个程序同时使用的代码和数据的库,DLL不是可执行文件.可以说在windows操作系统中随处可见,打开主分区盘下的system32.在一些项目中,如果有大量运算或者涉 ...

  6. zabbix中文乱码的问题

    在使用zabbix时,有时候会出现中文乱码的问题,如下: 因为zabbix自身对中文简体的支持不完善,需要我们手动的去上传新的字体进行替换: 1.在windows获取字体库文件 在Windows上的字 ...

  7. 《机器学习实战》中的splitDataSet函数

    splitDataSet这个函数困扰了我好一阵子,为什么以某一特征值为标准进行划分数据集以后,变成了局部?例如,如果以第1个特征为0为标准进行划分,那么返回的结果集就是不含有此特征的结果集,如下图红框 ...

  8. HDU 1222 - Wolf and Rabbit & HDU 1108 - [最大公约数&最小公倍数]

    水题,只是想借此记一下gcd函数的模板 #include<cstdio> int gcd(int m,int n){return n?gcd(n,m%n):m;} int main() { ...

  9. redis 数据迁移

    最近有个项目因为要搬迁服务器的原因,去找了服务器公司的运维,需要收费,于是果断决定自己实现这个功能.现在百度上已经一大把redis数据库迁移的教程,大部分是利用主从复制或者利用redis的RDB备份之 ...

  10. 字符编码笔记:ASCII,Unicode和UTF-8(转载)

    注:我注释的地方有 add by zhj.另Unicode.UTF-8.GB2312查询http://www.2fz1.com/so/ 在python中,a.decode(xxx)就是把str类型的字 ...