Window下PHP三种运行方式图文详解


Posted in PHP onJune 11, 2013

PHP能不能成功的在Apache服务器上运行,就看我们如何去配置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/会出现如下界面:注意红色部分和配置的关系

Window下PHP三种运行方式图文详解

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(); 
?>

Window下PHP三种运行方式图文详解

 

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

Window下PHP三种运行方式图文详解

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文件:

Window下PHP三种运行方式图文详解

Window下PHP三种运行方式图文详解

终于把PHP的运行方式讲完了,初学者一定要亲自试验一下,这篇教程具有一定的难度,要反复思考才能理解其中的意思,涉及到一些专业知识,当然你暂时可以直接使用模块运行方式,等自己对PHP有了一定的理解之后可以再回头看看这篇文章,今天我花了几个小时的时间整理PHP的运行方式,由于作者本人的水平有限,错误之处在所难免!
PHP 相关文章推荐
PHP 5.0 Pear安装方法
Dec 06 PHP
加速XP搜索功能堪比vista
Mar 22 PHP
解析PayPal支付接口的PHP开发方式
Nov 28 PHP
php文件怎么打开 如何执行php文件
Dec 21 PHP
PHP+Mysql日期时间如何转换(UNIX时间戳和格式化日期)
Jul 15 PHP
php中定时计划任务的实现原理
Jan 08 PHP
如何设置mysql允许外网访问
Jun 04 PHP
PHP实现支持GET,POST,Multipart/form-data的HTTP请求类
Sep 24 PHP
thinkphp3.2.3 分页代码分享
Jul 28 PHP
PHP用FTP类上传文件视频等的简单实现方法
Sep 23 PHP
PHP实现QQ、微信和支付宝三合一收款码实例代码
Feb 19 PHP
PHP面向对象程序设计子类扩展父类(子类重新载入父类)操作详解
Jun 14 PHP
控制PHP的输出:缓存并压缩动态页面
Jun 11 #PHP
基于PHP导出Excel的小经验 完美解决乱码问题
Jun 10 #PHP
win7+apache+php+mysql环境配置操作详解
Jun 10 #PHP
浅谈php中mysql与mysqli的区别分析
Jun 10 #PHP
探讨php中防止SQL注入最好的方法是什么
Jun 10 #PHP
php防注入,表单提交值转义的实现详解
Jun 10 #PHP
PHP获取当前页面完整URL的实现代码
Jun 10 #PHP
You might like
全国FM电台频率大全 - 18 湖南省
2020/03/11 无线电
雄兵连:第三季确定会出,不过时间未定,鹤熙是第三季的主角!
2020/03/13 国漫
PHP中上传多个文件的表单设计例子
2014/11/19 PHP
json跟xml的对比分析
2008/06/10 Javascript
一个JS的日期格式化算法示例
2013/07/31 Javascript
JavaScript设置首页和收藏页面的小例子
2013/11/11 Javascript
使用JavaScript的ActiveXObject对象检测应用程序是否安装的方法
2014/04/15 Javascript
js鼠标滑过图片震动特效的方法
2015/02/17 Javascript
简单纯js实现点击切换TAB标签实例
2015/08/23 Javascript
JS原型、原型链深入理解
2016/02/27 Javascript
Node.js 8 中的重要新特性
2017/06/28 Javascript
微信小程序如何实现全局重新加载
2019/06/05 Javascript
微信浏览器下拉黑边解决方案 wScroollFix
2020/01/21 Javascript
JavaScript cookie原理及使用实例
2020/05/08 Javascript
搭建vscode+vue环境的详细教程
2020/08/31 Javascript
[01:13:59]LGD vs Mineski Supermajor 胜者组 BO3 第三场 6.5
2018/06/06 DOTA
Python使用Socket(Https)Post登录百度的实现代码
2012/05/18 Python
Python中使用异常处理来判断运行的操作系统平台方法
2015/01/22 Python
python使用生成器实现可迭代对象
2018/03/20 Python
python 通过字符串调用对象属性或方法的实例讲解
2018/04/21 Python
python中单下划线_的常见用法总结
2018/07/10 Python
python爬虫获取百度首页内容教学
2018/12/23 Python
java判断三位数的实例讲解
2019/06/10 Python
Django ModelForm组件使用方法详解
2019/07/23 Python
Python爬虫 urllib2的使用方法详解
2019/09/23 Python
Python使用docx模块实现刷题功能代码
2020/02/13 Python
使用Dajngo 通过代码添加xadmin用户和权限(组)
2020/07/03 Python
CSS3实现各种图形的示例代码
2016/10/19 HTML / CSS
澳大利亚领先的优质葡萄酒拍卖会:Langton’s Fine Wines
2019/03/24 全球购物
判断单链表中是否存在环
2012/07/16 面试题
司机辞职报告范文
2014/01/20 职场文书
警示教育活动总结
2014/05/05 职场文书
法定授权委托证明书
2015/06/18 职场文书
担保书范文
2019/07/09 职场文书
[有人@你]你有一封绿色倡议书,请查收!
2019/07/18 职场文书
Python数组变形的几种实现方法
2022/05/30 Python