在Windows2008 R2(64位)系统上,IIS版本是7.5,如何安装支持PHP5.3呢?本文尝试讲解之。

[软件环境]

操作系统:Windows 2008 R2 Service Pack 1 (64位)
IIS环境:IIS 7.5
PHP版本:php-5.3.8-nts-Win32-VC9-x86 或 php-5.3.27-nts-Win32-VC9-x86

[PHP版本的选择]

目前php官网(http://windows.php.net/download/)提供的php-5.3的版本编号为5.3.27。可下载版本有VC9 x86 Non Thread Safe和VC9 x86 Thread Safe两种子版本。两个子版本都x86的,所以对于5.3而言,没有64位的PHP可用,只能将就用一下32位的。

对VC版本的选择,php.net官网上是这样讲的:
1)如果是用于 IIS 则选择 PHP 5.3 VC9 Non Thread Safe 或者 VC6 Non Thread Safe;
2)如果是用 IIS7 或更高版本以及 PHP 5.3+,则应选择 VC9 的包;
3)如果是用于 Apache 1 或 Apache 2 则选择 PHP 5.3 VC6 或者 PHP 5.2 VC6。

关于配置VC,官网还有这样的说法:VC9 版本是用 Visual Studio 2008 编译的并且在性能和稳定性上都有所提高。VC9 版本需要用户系统中安装有 ? Microsoft 2008 C++ Runtime (x86) 或者 ? Microsoft 2008 C++ Runtime (x64)。 

洪哥选择下载的是Zip包的格式,链接地址:http://windows.php.net/downloads/releases/php-5.3.27-nts-Win32-VC9-x86.zip

[配置PHP]

php进入5.3之后,基本上都是配置FastCGI的模式,而且配置过程真是太简单了。按下面步骤走即可。
1、解压php的Zip包
洪哥将php-5.3.27-nts-Win32-VC9-x86.zip解压到D:\php-5.3\目录下

2、设置php.ini
解压缩 PHP 的包之后,将 php.ini-production 拷贝一份到同一目录下,命名为“php.ini”。

3、修改php.ini
1)extension_dir =
extension_dir="D:\php-5.3\ext"

2)开放extension
洪哥开放了一下gd2和MySQL相关的几个扩展,将下面几行前面的分号(;)去掉 即可。
extension=php_gd2.dll
extension=php_mbstring.dll
extension=php_mysql.dll
extension=php_mysqli.dll

3)设置date.timezone
date.timezone = Asia/Shanghai

4)设置几个和FastCGI相关的参数
cgi.force_redirect = 0
在 IIS 下运行时需要关闭此项指令。这是个在许多其它 web 服务器中都需要激活的目录安全功能,但是在 IIS 下如果激活则会导致 PHP 引擎在 Windows 中出错。

cgi.fix_pathinfo = 1
此指令可以允许 PHP 遵从 CGI 规则访问真实路径信息。IIS 的 FastCGI 实现需要激活此指令。 

fastcgi.impersonate = 1
IIS 下的 FastCGI 支持模拟呼叫用户方安全令牌的能力。这使得 IIS 可以定义请求方的安全上下文。

fastcgi.logging = 0
FastCGI 日志在 IIS 下应被关闭。如果激活,则任何类的任何消息都被 FastCGI 视为错误条件从而导致 IIS 产生 HTTP 500 错误。

[配置IIS7.5支持PHP]

1、在IIS7.5的安装界面,把“应用程序开发”下面的“CGI”安装上去。否则IIS上无法配置PHP。

2、打开IIS7.5的MMC管理界面,点击左边的机器名,右边将出现整个IIS的全局配置选项。

3、双击右边的“处理程序映射”,在弹出的界面中的右边菜单中选择“添加模块映射”。

4、在“添加模块映射”的弹出窗口中,进行如下填写。
请求路径:*.php
模块:FastCgiModule
可执行文件(可选):D:\php-5.3.8\php-cgi.exe
名称:PHP-FastCGI
按照php的官网,还需要在这个窗口中,点击“请求限制”按钮,在弹出的“请求限制”窗口中,勾选“仅当请求映射至以下内容时才调用处理程序”,然后下面单选按钮选择“文件或文件夹”。


Windows2008_R2(64位)IIS7.5安装PHP-5.3完美教程-LMLPHP

5、在确认“添加模块映射”窗口时会弹出一个提示窗口,意思是将为其增加一个FastCGI的应用程序,选择“是”。这时在FastCGI设置中将出现一个关于PHP的程序程序。

6、当然,还应该为php程序添加一下“默认文档”,将index.php和default.php都添加进去。

7、重启一下IIS。

到此为止,php在IIS上的配置已经结束。但郁闷的是,洪哥写了一个php页面来做测试,但居然不能使用,提示的错误信息是“发生未知 FastCGI 错误”,错误代码为0x800736b1。几经折腾,终于找到了如下的解决方法。

[VC及VC运行环境的位数]

洪哥下载的PHP是VC9编译的,所以,还需要安装VC9的运行环境。
因为洪哥的服务器上64位的操作系统,所以洪哥下载了一个“vcredist_x64.exe”文件,它的软件名称叫作“Microsoft Visual C++ 2008 Redistributable Package (x64)”。但安装时提示系统已经安装了此软件,问要不要修复一下。我想应该是之前的版本有问题,那就修复一下吧,但郁闷的是,修复后问题依旧。
后来突发灵感,因为我下载的php是32位的(上面已经提到过),那是不是这个VC9的编译运行环境也要用32位的呢?于是使劲的找,终于找到一个文件“vcredist_x86.exe”,它的软件名称是Microsoft Visual C++ 2008 Redistributable Package (x86)。一开始还在想,它会不会与前面安装的那个64位的有冲突,心里很忐忑。尝试安装它,居然没有提示错误,重新刷新之前的php测试页面,phpinfo跃入眼帘,搞定!

提示:
Microsoft Visual C++ 2008 Redistributable Package (x86) 下载地址:http://www.microsoft.com/zh-cn/download/details.aspx?id=29
Microsoft Visual C++ 2008 Redistributable Package (x64) 下载地址:http://www.microsoft.com/zh-cn/download/details.aspx?id=15336

希望本文对遇到“发生未知 FastCGI 错误”,错误代码为0x800736b1的朋友有所帮助,谢谢!

文章转载自:http://www.splaybow.com/post/windows-2008-iis75-php53-install.html

10-05 16:58