windows下配置IIS+FastCGI+PHP5.4.8

前面我写了《windows安装PHP5.4+Apache2.4+Mysql5.5》(地址:http://www.myxzy.com/post-333.html)的安装教程,本地实现是很简单的,但是有人还是喜欢用IIS来配置PHP环境,部分朋友找到我问我如何在IIS下配置php环境,为什么按照网上的教程配置不成功呢。那么我在这里简单的讲一下IIS和PHP的配置过程,数据库的配置就略过了。


注意:

PHP5.3版本开始是不能在IIS6上面通过ISAPI扩展运行的,而且在PHP文件里面也没有php5isapi.dll,取而代之的是php5nsapi.dll,换句话说PHP5.3以后的版本就不再用ISAPI进行扩展在IIS里运行了,那有没有什么办法让PHP5.3在IIS里运行的呢,当然有了,那就是FastCGI。

所以网上的很多用ISAPI扩展配置php的教程你可以不用看了,因为你根本不能配置的起来。


选择php的版本:

FastCGI执行方式是以单一线程来执行操作,所以不需要进行线程的安全检查,除去线程安全检查的防护反而可以提高执行效率,所以,以FastCGI来执行PHP,建议选择Non Thread Safe版本。


第一部分:准备工作。

因为没有windows2003环境,所以我这里用了windows xp sp3,2者的配置一模一样的。

1.windows安装IIS组件,这里略过。

2.安装FastCGI。

网页版在线安装(当然也有下载版本的,自己找找):http://www.iis.net/downloads/microsoft/fastcgi-for-iis

3.下载php5.4.8

VC9 x86 Non Thread Safe:http://windows.php.net/download/#php-5.4-nts-VC9-x86



第二部分:安装配置php。

1.解压下载回来的php的zip压缩包。比如放在D:/。

2.D:/php下复制php.ini-development文件,并将文件名改为php.ini。

3.修改php配置文件php.ini,保存即可。

第730行 ; extension_dir = "ext" 先去前面的分号再改为 extension_dir = "D:\php\ext"

第919行 ;date.timezone = 先去前面的分号再改为 date.timezone = Asia/Shanghai

第743行 ;cgi.force_redirect = 1 先去前面的分号再改为 cgi.force_redirect = 0

第771行 ;fastcgi.impersonate = 1 去掉前面的分号

第783行 ;cgi.rfc2616_headers = 0 先去前面的分号再改为 cgi.rfc2616_headers = 1

其他的配置请按照自己的需求更改。


第三部分:配置FastCGI。

1.修改配置文件fcgiext.ini,默认安装在C:\WINDOWS\system32\inetsrv文件夹下。

在这个文件的最后加上下面的代码,保存。

php=PHP
[PHP]
ExePath=D:\PHP\php-cgi.exe
2.配置IIS支持FastCGI。

“网站” --- “属性”  --- “主目录” --- “配置” ,添加一个新的ISAPI项。

可执行文件:C:\window\system32\inetsrv\fcgiext.dll

扩展名:.php

点击查看原图



点击查看原图


点击查看原图


支持index.php默认页

点击查看原图


到此配置文成,重启IIS。其他mysql等等的配置略过。


新建index.php,输入以下内容,访问看看是否出现php 5.4.8的信息

<?php phpinfo(); ?>

我自己配置成功后出现如图演示:

点击查看原图

目前有 12 条评论

avatar

游客18862994  2018-03-12 00:35 5楼

在iis6中用tp框架搭建网站,也是装了FastCGI,后台使用ueditor1.4.3单图可上传,多图和附件点击后报错"连接被重置"
其中rewrite规则自己这么写的
[ISAPI_Rewrite]
CacheClockRate 3600
RepeatLimit 32
# 匹配文件后缀名
RewriteRule .*\.(?:gif|jpg|png|css|js|txt|jpeg|swf|flv|shtml|html|php) $0 [I,L]
# 不允许读取在文件后缀
RewriteRule /httpd(?:\.ini|\.parse\.errors) / [F,I,O]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f  
# 匹配目录根  
RewriteRule ^\/$ $0\/index.php [L]
RewriteRule .*\/ $0\/index.html [L]
# 前台设置
RewriteRule ^(?!/Application)(?!/public)(?!/ThinkPHP)(?!/ueditor)(?!/Uploads)(?!/phpinfo.php)(?!/index.php)(.*)$ /index.php/$1 [L]
不知道哪里出问题了,控制台又报错说是跨域问题,可我没有跨域呀~ 回复
avatar

星之宇  2018-03-13 12:01

@游客18862994:这个应该要重写ueditor的上传吧,多图上传好像用的是flash的上传,改成html5方式吧,毕竟现在html5是趋势。 回复
avatar

游客18862994  2018-03-25 00:59

@星之宇:RewriteRule ^(?!/Application)(?!/public)(?!/ThinkPHP)(?!/ueditor)(?!/Uploads)(?!/phpinfo.php)(?!/index.php)(.*)$ /index.php/$1 [L]
是把这里面的(?!/ueditor)去掉吗?
"多图上传好像用的是flash的上传,改成html5方式吧"这个怎么改成html5方式呢? 回复
avatar

星之宇  2018-03-25 04:52

@游客18862994:ueditor上传不要写到伪静态规则中去。Html5的上传方法网上一大把。 回复
avatar

tilongchina  2012-11-19 14:28 4楼

想问一下,通过fastcgi配置好php运行环境之后,需要对网站的目录权限进行设置吗?怎么设置? 回复
avatar

星之宇  2012-11-19 14:40

@tilongchina:一般来说默认的即可,如果一定要设置请根据具体的php来。设置的话,文件夹右击属性安全。 回复
avatar

tilongchina  2012-11-19 14:47

@星之宇:嗯,好的,谢谢 回复
avatar

tilongchina  2012-11-19 12:04 3楼

谢谢你的教程,写得很好!FastCGI模式安装要比ISAPI模式安装要简单,易于理解,ISAPI模式还要复制dll文件到C盘,很麻烦。 回复
avatar

请教  2012-11-03 23:48 2楼

为什么装好了 测试时候 显示

网站无法显示该页面
HTTP 500  
   最可能的原因是:
•该网站正在进行维护。
•该网站有程序错误。 回复
avatar

星之宇  2012-11-03 23:56

@请教:这个肯定iis安装的有问题,如果是xp的话,可能是精简版系统造成的,还有一个系统优化工具也会造成这个。 回复
avatar

sprityaoyao  2012-11-01 09:50 1楼

我现在都是用phpdtudy一键配置的 回复
avatar

星之宇  2012-11-01 09:51

@sprityaoyao:phpstudy一键是简单,但是集成包里的php,mysql,apache等等不是最新版的,你要测试的话还是新版本比较好。 回复
昵称
邮箱
主页
提交
订阅