前一段时间我写过一篇在Windows上安装Apache+PHP+MySQL的博客,而最近由于要配置一台服务器,我又不得不在Windows2003下的IIS6.0上配置了一下PHP+MySQL的环境。这次配置和两年前在Windows2000上配置相比,还是有一些的差别,网上关于这方面的资料不少,而是莫衷一是的东西太多,所以写就此文,希望能对看到此文的朋友有所帮助。
一、安装环境
操作系统是 Windows 2003 英文版+IIS 6.0, PHP, MySQL 的最新版本是截止到 2007.09.07,分别在其官网下载的:
* PHP 5.2.5 (Windows Binaries PHP 5.2.5 zip package): http://www.php.net/downloads.php
* MySQL 5.1 Windonws: http://dev.mysql.com/downloads/
二、由于Windows 2003默认安装了IIS6.0,所以安装这步省略。
三、在Windows 2003下安装 MySQL 5.1
MySQL 的安装比较简单,它提供了一个 win32 的安装包。下载后根据提示一路next安装即可。安装完成后,会问你要不要到官网注册,跳过即可。然后会问你是否 Configure the MySQL Server now,选中并继续,然后根据提示,设定 字符集,以及 root 管理员的密码即可。
四、在 Windows 2003 下安装 php 5.2.5
1. 将下载的 php 5 ZIP 包直接解压,我直接将 PHP 5.2.5 zip 文件解压到 C:\php 目录下面。安装 php 不建议使用 win32 安装程序(主要是以后安装扩展麻烦)。
2. 在资源管理器中进入 php 的安装目录,将 php.ini-recommended 复制一份,命名为 php.ini。然后打开 php.ini。
3. 找到:
;extension=php_mysql.dll
将前面的 ; 号去掉, 改成:
extension=php_mysql.dll
4.找到:
extension_dir = “./”
将其改为你的 php 安装目录下 ext 子目录的绝对路径。例如我的:
extension_dir = “C:/php/ext/”
这步很重要 。否则接下来 php 会找不到 php_mysql.dll 模块,无法装载。
然后把php.ini复制到Windows目录下面,把libmysql.dll复制到Windows下面的System32目录。这个地方很多文章说把php5ts.dll也复制到system32目录的,而经过我的测试发现,不用复制也是可以的(有不同看法的可以在下面提出来)。
五、配置IIS6.0支持PHP,这里的配置是采用ISAPI模块的方式。首先打开网站的属性对话框,选择ISAPI筛选器(ISAPI Filters)选择卡,然后点击添加,在弹出的对话框中分别输入php和php包中的php5isapi.dll的路径(如下图)
点击确定保存设置。然后点击Home directory选择卡,点击Configration,在打开的对话框中分别输入.php扩展名和php5isapi.dll的路径(如下图)
点击确定保存设置。点击Documents选择卡,添加一个php的默认首页文件,如:index.php。
然后在IIS下面的“web 服务扩展”里面添加一个扩展,扩展名是PHP,要求的文件就是php5isapi.dll的路径,也就是C:\php\php5isapi.dll,然后选择“允许”使其被允许执行。
六、在记事本中输入下面的代码:
<?php
phpinfo();
?>
然后保存为index.php,放在网站的根目录,在浏览器中打开 http://localhost/index.php,即可看到测试输出结果。
OK,现在你可以在 Windows 2003 下使用 mysql + php 开发 web 程序了。
#update:文章有一处笔误,应该是“把libmysql.dll复制到Windows下面的System32目录”,再次向所有看过此文章的朋友致歉。
#update(2008-3-2):很多服务器管理员为了系统的安全,把一些系统盘的users用户组权限都去掉了,这个时候php加载是会失败的,解决的办法就是为php目录添加users用户组的读取权限,或者加everone的读取权限,道理是一样的。以下是详细说明:
Windows 2003默认安装的时候都会为每一个盘默认加载users用户组,也就是说每一个用户都可以访问系统里面的资源,IIS运行并加载php的dll文件的时候,也是作为一个用户的身份来访问php目录的,当我们为了系统的安全行,把users这个用户组去掉的时候,IIS就无法访问到了,也就会出现加载失败的问题了。
说到这里,很多朋友也就明白怎么来解决这个问题了,就是把users这个用户给php目录加上,然后给这个用户组设置读取权限。很多网上的朋友说加everone用户并设置权限,其实道理是一样的,我还是喜欢用users用户组。
总结一点就是权限设置的问题,所以当你的配置和我的配置一样但是还是没有加载成功的时候,那就要注意一下权限的问题了。