IIS6+FASTCGI1.5+PHP5.2.17+MYSQL5.5.23+phpMyAdmin3.5.0安装配置教程

本文版本v0.1版

因原有的ISAPI方式解析PHP脚本已经不被支持,PHP从5.3.0以后的版本开始使用微软的FastCGI模式,虽说PHP 5.3发布的Windows版已经不支持ISAPI模式了,是未来的趋势,但PHP5.3现在还不是很流行,PHP3.5的改动也很大,我有的很多程序都不支持,只能用最新PHP5.2.17版本。

大家都知道php配置有几种方式:
1、CGI方式加载PHP环境,通常就是IIS里面配置解释器为php.exe,早期比较常见,目前使用较少。
特点是:稳定,但效率太低。
2、ISAPI方式加载PHP环境,通常就是IIS里面配置解释器为php5isapi.dll,目前使用最多,应用最广。
特点是:多线程,效率较高,但不够稳定。
3、FastCGI方式加载PHP环境,在IIS环境里并不常见,但其它系统环境应用还是有的,不过IIS7.0开始内置FastCGI了。
特点是:高效率,高稳定性,属于将来发展趋势。
新版本的PHP5.2.17通过以往老方法已经不能在IIS上安装了,经过自己的摸索,发现5.2也可以安装FastCGI,PHP5.2+FastCGI模式来搞的尽量完美一些,开始!
(这里用的服务器操作系统是x86版本的,所以以下程序均为在Windows x86环境下使用的版本。)

首先我们要下载两个工具,FastCGI1.5和php5.2.17

一、FastCGI
fcgisetup_1.5_rtw_x86.msi
下载地址:http://www.iis.net/download/FastCGI
打开页面后点右边 download x86 / x64 (根据自己的服务器选择下载)

在IIS.net中选择下载fastcgi的版本
下载之后,双击运行进行安装。安装后在 C:WINDOWSsystem32inetsrv 目录下产生了五个文件。fcgiext.ini文件是它的配置文件,可以直接修改。同时在 IIS 的 “Web 服务扩展”里多了 FastCGI Handler。如下图:

 

二、PHP
1.下载PHP
下载地址:http://windows.php.net/download/

在PHP.NET中选择PHP的版本下载

 

Non Thread Safe是非线程安全版本;
Non Thread Safe 是线程安全版;
简单的说:
无须Zend Optimizer 请下载非线程安全版
需要Zend Optimizer 请下载线程安全版

注:微软的说法是 fastcgi使用非线程安全版PHP执行效率会更高,也推荐的是非线程安全版,但是很多商业程序是用zend加密了的,因此按照你的实际情况来下载php包。
特别注意要从官方网站上下载文件,其他地方下载的文件非常有可能不安全。服务器从一开始就被肉鸡,那真是很悲剧。

2.安装PHP
下载后解压到所需目录,不建议将php装在C盘,我自己将PHP装在了c盘,如果你的安装路径不同,请自行修改以下提及到的对应路径。该目录需要给予user的读取运行权限。如图:

PHP安装目录要给予user用户组读取运行权限

 c:\php目录下的所有dll文件复制到C:\windows\system32下(Windows2000系统为C:\winnt\system32,下同),如果已经有若干同名文件存在,覆盖即可。

3.注册 PHP 到 FastCGI
自动注册
在命令行下运行
cscript C:\WINDOWS\system32\inetsrv\fcgiconfig.js -add -section:”PHP” -extension:php -path:”c:\php\php-cgi.exe”
最后那里(d:\php\php-cgi.exe)需要改为你php-cgi.exe所在目录.

手动注册
打开 C:\WINDOWS\system32\inetsrv\fcgiext.ini 文件,拉到最下面。
在 [Types] 下添加以下配置:

[Types]
php=PHP
[PHP]
ExePath=c:\PHP\php-cgi.exe

这里要用:“\”不能用“/”
php表示扩展名,PHP是配置节名称,以[PHP]定义。 (ExePath=写你自己的安装的目录)

4.配置PHP.ini
C:\PHP目录下有两个 ini 文件,php.ini-dist 和 php.ini-recommended。建议使用php.ini-recommended,因为在该文件中已经优化了性能和安全,php官方预定设置的生产环境版。先将php.ini-recommended重命名为 php.ini(还是在当前目录中),再用文本编辑软件打开这个php.ini ,请仔细阅读该文件中的注释,因为它从 php.ini-dist修改而来,会对设置产生较大的影响。(建议使用Notepad2、EditPlus、UltraEdit等各种支持语法高亮显示的文本编辑软件)。
找到 extension_dir = “./”
将其路径指到你的PHP目录下的扩展功能目录中,我的PHP对应修改为extension_dir = “c:\PHP\ext”
再在D盘下建立文件夹,并命名为upload_tmp 并给予读、写权限,不然后期会出错!

找到 ;upload_tmp_dir =
将 ;upload_tmp_dir = 该行的注释符(前面的分号“;”)去掉,使该行在php.ini文档中起作用。
upload_tmp_dir是用来定义上传文件存放的临时路径,在这里你还可以修改并给其定义一个决定路径。
这里我设置为upload_tmp_dir = “d:/upload_tmp/” (这里就是我前面建立的文件夹)

找到 ;fastcgi.impersonate = 1 把前面的“;”去掉
改为 fastcgi.impersonate = 1
找到 short_open_tag= Off 改为 short_open_tag= On
搜索 ; Windows Extensions,定位到php.ini文件的extension,将下面列出的常用扩展前面的分号注释符去掉:
; extension=php_curl.dll
; extension=php_gd2.dll
; extension=php_ldap.dll
; extension=php_mbstring.dll
; extension=php_exif.dll
; extension=php_mysql.dll
; extension=php_mysqli.dll
; extension=php_sockets.dll
; extension=php_xmlrpc.dll
特别提示:Exif扩展是用来显示图片的exif信息的,因该扩展需要mbstring支持,所以将extension=php_exif.dll这一行移动到extension=php_mbstring.dll一行的下面。
(php5.2.17版本无需改动)

;date.timezone =
去掉前面的分号注释符,这里将其设置为 date.timezone = Asia/Shanghai
如果不改以上的date.timezone可能打开网页会提示500错误
关于时区设定的说明:
从php5.1.0开始,php.ini里加入了date.timezone这个选项,默认情况下是关闭的,也就是显示的时间(无论用什么php命令)都是格林威治标准时间,和我们的时间(北京时间)差了正好8个小时,有以下2种方法可以恢复正常的时间。
1)如果要用5.1以上版本,而且不修改php.ini,则需要在关于时间的初始化的语句的上面加上date_default_timezone_set (XXX),或者使用date(‘Y-m-d G:i:T’, strtotime(‘+8HOUR’) )来获取日期时间;
2)一劳永逸,仅限能修改php.ini。打开php.ini把date.timezone前面的分号去掉,在=后面加XXX,重启http服务(如apache2或iis等)即可。
关于XXX,大陆内地可用的值是:Asia/Chongqing、Asia/Shanghai、Asia/Urumqi(依次为重庆,上海,乌鲁木齐),港台地区可用:Asia/Macao、Asia/Hong_Kong、Asia/Taipei(依次为澳门,香港,台北),还有新加坡:Asia /Singapore,以上没有北京,不过接着往下看,其他可用的值是:Etc/GMT-8,Singapore ,Hongkong,PRC(中华人民共和国)。

查找:;session.save_path = “/tmp”
将前面的分号注释符去掉,这里将其设置为session.save_path = “D:/upload_tmp” (这里就是我前面建立的文件夹)
查找 ; cgi.force_redirect = 1 修改为 ; cgi.force_redirect = 0
查找 ; cgi.fix_pathinfo=0 修改为 ; cgi.fix_pathinfo=1
查找magic_quotes_gpc,更改为magic_quotes_gpc=Off
查找short_open_tag,更改为short_open_tag=On
查找max_execution_time = 30,更改为max_execution_time = 600
查找max_input_time = 60,更改为max_input_time = 600
查找memory_limit = 8M ,更改为memory_limit = 20M
查找post_max_size = 8M,更改为post_max_size = 20M
查找upload_max_filesize = 2M,更改为upload_max_filesize = 20M
查找session.auto_start = 0,更改为session.auto_start = 1

5.配置网站
执行DOS命令
cscript C:\WINDOWS\system32\inetsrv\fcgiconfig.js -set -section:”PHP” -InstanceMaxRequests:10000
cscript C:\WINDOWS\system32\inetsrv\fcgiconfig.js -set -section:”PHP” -EnvironmentVars:PHP_FCGI_MAX_REQUESTS:10000

打开IIS管理器,右键网站 => 属性 => 主目录 => 配置 => 添加,如下图配置:
在IIS中添加.php后缀的解析服务

可执行文件路径:C:\WINDOWS\system32\inetsrv\fcgiext.dll

先运行c:\PHP\php-cgi.exe如果能进入命令窗口并只有光标,说明FastCGI能正常调用php-cgi,否则会提示错误,这点对使用微软的fastcgi模式很重要。

修改完在IIS上或者命令提示符运行iisreset命令重启IIS服务!
net stop w3svc
net stop iisadmin
net start w3svc

写个 index.php 测试页测试下

<?php
phpinfo();
?>

然后在浏览器中访问这个文件,如果看到php详细信息页面,就说明你的服务器可以正常运行php了。
IIS6中运行PHP的测试信息页面

作者: sinma

sinma 存在于自然,存在于你身边。

发表评论