6 月 27 日,微软发布了 Virtual Machine Additions for Vista Beta 2,我将其安装在 Virutal Server 2005 R2 SP1 Beta 1 上之后,终于可以玩 IIS 7 了。在安装这个版本的 VM Additions 之前,我的 Longhorn Server Beta 2 虚拟机一直用的是 for Windows 2003 的 VM Additions,那个速度别提有多慢了。装了这个版本以后,在给 Longhorn Server Beta 2 虚拟机分了 480M 内存的情况下,速度飞快,感觉棒极了!于是终于开始了 IIS 7 之旅。
作为一个 PHP 玩家,在有 IIS 7 可用之后,第一个想法自然是给 PHP 在 IIS 7 上安一个家。下面就是我的全部安装过程图解。
首先,安装 IIS 7,这个就不用说了吧。为了体验 IIS 7 的全部功能,我把它全部特性都安装了,但在本文中我还不打算介绍这些,不然就扯得太远了。安装好之后,PHP 5 for Windows 的 Binary zip 包。将其解压缩到 C:PHP 目录下,然后复制一份 php.ini-dist 改名为 php.ini。接下来打开我的电脑->属性->高级系统设置->环境变量里,添加上可执行文件的查找路径(PATH)和 php.ini 的查找路径(PHPRC):
接下来开始配置 IIS 7,下面是 IIS 7 的启动后的开始画面,看上去比较酷:
你可以对某个站点进行配置,也可以对整个服务器进行配置,当然对整个服务器配置对于以后的事情可能就更加方便了,比如新建一个站点,就可以支持 PHP,这对于作虚拟主机是非常合适的,所以这里我们是按照对整个服务器进行配置来作的。因此先选中要配置的服务器,默认当然是你的本地服务器了,你会看到选中以后,右面的画面跟 IIS 6 完全不同了:
从这整个属性页中选择你要找的特性当然比较费眼,所以,你可以按照范围(Areas)和分类(CategorIEs)来选择。这里我们要配置的是 ISAPI and CGI Restrictions,它可以从 IIS 范围的 Security 分类中找到:
在全部安装的情况下,ISAPI and CGI Restrictions 页中默认有 ASP 和 ASP.NET 两项:
我们在最右面的任务(Tasks)里选择 New Restriction… 来为 PHP 创建 Restriction,要填写的内容如图所示:
接下来我们可以为 PHP 程序创建一个应用程序池:
在然后配置默认文档,增加一个 index.php 的默认文档:
接下来,配置 IIS 范围里 Server Components 分类中的 Handler Mappings 选项:
这一步是最重要的,在这里,我们要添加的是 Script Map,要填写的内容如图所示:
配置完这一步后,PHP 就可以运行了。不需要配置 ISAPI Filters,也不要重启 IIS 服务器,你可以直接在 C:inetpubwwwroot 目录下创建一个 index.php,内容就是执行一个 phpinfo() 函数,然后再浏览器中输入 http://localhost,如果看到下图,就说明配置成功了:
安装好了 PHP,接下来就是给它在装个加速器了,我一般使用的是 Zend Optimizer,因为这个最好配置。你可以从这里下载它:ZendOptimizer-3.0.1-Windows-i386.exe。
安装过程中,我们会发现 Zend Optimizer 居然能识别出 IIS 7 来,真是厉害:
安装好后,刷新那个页面,在页面底部的某个位置,你就会发现 Zend Optimizer 已经启动了:
再接下来,我们应该配置一下保存 Session 的目录,不然的话,Session 可能无法正常工作。
首先,为 Session 文件建一个文件夹,这里我们以 C:PHPsessions 目录为例,建立好之后,给其分配权限,这里需要给 IIS_IUSRS 用户组以完全控制权限,IIS_IUSRS 用户组应该是 IIS 7 中新加的用户组,在之前的版本中,我似乎未见到过:
然后,把这个路径,添加到 php.ini 中,注意去掉 session.save_path 前面的分号:
再次刷新 http://localhost 这个页面,如果看到 session.save_path 的项是你所配置的目录,这八成就成功了:
为了进一步确认 Session 可用了,你可以直接装一个带有 Session 的程序试试,我这里选择的是 PHPRPC,执行之后,我们可以看到 C:PHPsessions 目录下有 session 文件了。
好了,到这一步,就算是大功告成了,至于其它的扩展,自己在 php.ini 中启用就可以了!就是这么简单。不过修改 php.ini 似乎还是需要重启 IIS 服务器才能使修改生效。