首先,从PHP官方网站:http://www.php.net/downloads.php下载PHP压缩包,飘易在写这篇文章的时候,最新版本是PHP 5.2.10。因为是win2003环境,我们下载Windows Binaries下的 “PHP 5.2.10 zip package [10,242Kb]” 即可。下载后,解压缩至 C:php 目录里(新建php目录)。 第二,打开c:php目录,将PHP目录(C:/PHP)下的 php.ini-dist 文件重命名为 php.ini,PHP的配置文件就是它,修改以下几个地方,修改好后把 php.ini 文件复制到 C:WINDOWS 目录里: extension_dir="C:phpext" ,指向php文件夹下放置“php_*.dll”文件的路径。PHP4和PHP5的路径在这里有所区别。
default_charset="gb2312" ,修改默认字符集,这里,如果前面有分号“;”,去掉这个分号;
register_globals=Off 改为 register_globals=On ,使传递全局变量有效;
extension=php_dba.dll 如果前面有分号,取消分号,以下同;
extension=php_dbase.dll
extension=php_gd2.dll GD库做图,一般用于图形验证码;
extension=php_mysql.dll 用于连接MYSQL数据库;
magic_quotes_gpc = On 如果是 Off,一定要打开为 On,这是防止sql攻击的重要的一步!5.0版本已经默认 On 了。 第三、将PHP目录下的 php5ts.dll 文件拷贝到 C:WINDOWS 下。 第四、配置IIS下PHP扩展,这是重点。 1:打开IIS,在需要支持PHP的网站上点右键选择“属性”。 2:找到“主目录”标签,点击“应用程序设置”里右下角的“配置”按钮。 3:在“应用程序扩展”窗口中,点击“添加”,可执行文件路径 c:/php/php5isapi.dll 文件,扩展名输入 .php,这样在解析过程中将自动调用php5isapi.dll解释PHP语言。另外还需要把“脚本引擎”和“检查文件是否存在”选中。如下图:
这里有需要注意的地方,飘易觉得为了安全必须把没必要的扩展全部删掉,只留下必要的扩展名。如果使用mdb数据库即access,需要把mdb后缀的解析到非asp.dll解析的脚本上,如:C:WINDOWSsystem32inetsrvuihelper.dll,具体如下图:
4:点击网站属性窗口的“ISAPI筛选器”标签,添加筛选器,筛选器名称:php,可执行文件:C:phpphp5isapi.dll,确定。
5:点击属性窗口中的“文档”,添加index.php,default.php
6:返回IIS管理器,在“web服务扩展”里添加新的服务扩展,扩展名:php,要求的文件:C:phpphp5isapi.dll,“设置扩展状态为允许”前打钩。
到这里,IIS下配置完毕,重启IIS即可。在网站下新建 index.php ,里面写上一句 <?php echo phpinfo();?> 即可。打开网站url,看是否正常显示了php的信息,如果正常,说明配置成功。 如果c:/php的目录权限设置过于严格的话,IIS下的php扩展是无法加载成功的,这就需要我们为 c:/php 目录加上 everyone 的 读取和运行、列出文件夹目录、读取权限 即可。
我的环境是win2003 IIS6.0,php5的目录是D:php;
所碰到两个最难的地方就是:php5isapi.dll未加载和无法正常启动MySQL,现在分享我的解决方案。
【php5isapi.dll未加载】
IIS上设置之后,也开启了WEB服务扩展中的“所有未知的ISAPI扩展”和“Active server pages”两项,但回到ISAPI筛选器中写入的php5isapi.dll要么就是“状态:未知”(无图标),要么就是“状态:未启动”(红色向下箭头图标)。
解决办法:
1.首先确定权限的限制是由两部分造成的:系统文件权限以及服务器扩展权限,首先来到这个ISAPI链接库文件所在的地方,之后给予这个文件EveryOne的完全控制权限(你也可以选择读取+写入+执行的权限组合)。
2.解决服务器扩展权限:来到IIS6.0的“服务器扩展”设置页面,如果你想图省事,可以直接点击“允许所有的未知ISAPI”的按钮,但我并不推荐这样做,这样太不安全了!我们在此应当添加一个新的服务器扩展,扩展名你可以随便填,文件就选择到那个ISAPI链接库文件上,然后勾选“将状态设置为允许”后,保存。
3.为了使设置生效,请重启系统,重启后你的ISAPI扩展就可以正常加载了!
重要要的原因可能是:服务器做了安全设置,把d:php的everyone权限去掉了,IIS自然没法加载php5isapi.dll。
解决办法:d:php目录加上everyone用户 设置权限为:只读就可以了.