越夜越有机 发表于 2009-1-5 09:01:57

从权限入手解决IIS PHP环境故障

在IIS基础上建立PHP环境总会出现这样或那样的问题,很多问题都比较难解决,笔者最近在建立IIS下PHP环境时就遇到了出现访问出错的问题,所有php页面文件无法正常显示出来,而ASP还有HTML静态页面能够顺利访问。下面就请各位IT168的读者随我一起从权限入手解决IIS PHP环境故障。
一、故障现象:
    笔者搭建环境采用的操作系统是windows XP,IIS是系统自带的IIS 5,PHP版本是5.2。按照网上的步骤笔者安装PHP程序并配置了IIS中的相应映射参数建立了PHP环境,并且生成了名为index.php的文件作为测试用。在实际使用中却发现在服务器上通过浏览器访问http://127.0.0.1/index.php和http://localhost/index.php均出现错误提示,具体页面显示为“无权查看网页,基于所提供的凭据,您没有权限查看此目录或网页,HTTP错误 401.3——访问被资源ACL拒绝”。(如图1)

   
      
www.ad119.cn/bbs/attachments/computer/20090105/200915902896877801.jpg

   
   
      图1
   


    为了进一步排查故障笔者又在IIS中通过在默认网站上点“浏览”来查看,结果收到的反馈消息和上面的一样,也是“HTTP错误 401.3——访问被资源ACL拒绝”。(如图2)


   
      
www.ad119.cn/bbs/attachments/computer/20090105/20091590291577802.jpg

   
   
      图2
   


    然而在同一个站点的其他页面文件,只要不是PHP语言建立的都可以正常浏览和查看,包括HTML静态页面和ASP动态网页文件。
二、修改验证方式解决问题:
    既然IIS反馈回的信息是“HTTP错误 401.3——访问被资源ACL拒绝”,所以笔者也针对访问权限进行排查故障工作。
    第一步:在IIS中的默认网站上右键选择“属性”来查看该站点的相关属性信息。(如图3)



   
      
www.ad119.cn/bbs/attachments/computer/20090105/20091590297877803.jpg

   
   
      图3
   



    第二步:在打开的默认网站属性处我们找到“目录安全性”标签,然后点“匿名访问和身份验证控制”旁边的“编辑”按钮。(如图4)



   
      
www.ad119.cn/bbs/attachments/computer/20090105/200915902912577804.jpg

   
   
      图4
   






   
      
www.ad119.cn/bbs/attachments/computer/20090105/200915902917177805.jpg

   
   
      图5
   



    第四步:为了方便排查故障,特别是为了避免权限访问造成的问题,笔者在“身份验证方法”处点了“集成Windows身份验证”,这个选项的意思就是在本机或者网络有用户访问该站点里的页面文件时,将提示要求输入正确的Windows系统登录口令,通过Windows登录身份来验证是否容许浏览页面。(如图6)



   
      
www.ad119.cn/bbs/attachments/computer/20090105/200915902921877806.jpg

   
   
      图6
   



    第五步:“确定”完毕后提示要求将下属目录和页面文件也按照这种规则生效,继承覆盖设置。我们同意即可。(如图7)



   
      
www.ad119.cn/bbs/attachments/computer/20090105/200915902921877807.jpg

   
   
      图7
   



    第六步:修改完验证采用“集成Windows身份验证”后在IIS中浏览默认网站就没有任何问题了,可以顺利的显示出index.php文件中的PHP页面内容。(如图8)



   
      
www.ad119.cn/bbs/attachments/computer/20090105/200915902923477808.jpg

   
   
      图8
   






   
      
www.ad119.cn/bbs/attachments/computer/20090105/200915902928177809.jpg

   
   
      图9
   



    第八步:如果身份验证通过了Windows系统的检查,那么正确的页面信息也将显示出来。(如图10)



   
      
www.ad119.cn/bbs/attachments/computer/20090105/2009159029375778010.jpg

   
   
      图10
   



    至此我们就解决了IIS中PHP页面访问所出现的“HTTP错误 401.3——访问被资源ACL拒绝”故障。不过这种设置在访问上带来了一定的不方便,必须知道Windows系统的帐户和密码才可以浏览,要知道一般网站都是给外部用户使用的,他们并不会知道服务器的密码与管理帐户,就算知道了也会给服务器的安全带来巨大的隐患。所以我们还需要从权限入手,解决问题。
三、修改匿名访问帐号解决实际问题:
    既然通过修改访问方式为“集成Windows身份验证”能够解决实际问题,这就说明问题的根源不在PHP上,而在于权限的设置。
    我们再次尝试在IIS中的默认网站上右键选择“属性”来查看该站点的相关属性信息。找到“目录安全性”标签,然后点“匿名访问和身份验证控制”旁边的“编辑”按钮。将“身份验证方法”处看到的IUSER_CHINA-914340F04帐户通过“浏览”按钮选择管理员administrator帐户,密码也设置相应的密码。(如图11)


   
      
www.ad119.cn/bbs/attachments/computer/20090105/2009159029390778011.jpg

   
   
      图11
   


    再次浏览PHP文件你会发现一切顺利,PHP文件的内容可以被正常显示。(如图12)通过浏览器访问页面也没有任何问题,PHP内容显示无误。(如图13)


   
      
www.ad119.cn/bbs/attachments/computer/20090105/2009159029406778012.jpg

   
   
      图12
   


   
      
www.ad119.cn/bbs/attachments/computer/20090105/2009159029421778013.jpg

   
   
      图13
   


    可见将默认的IUSER_CHINA-914340F04帐户修改为administrator管理员权限的帐户后访问就没有任何问题了,同时也不会出现上面修改验证方式时出现的帐户密码确认对话框,外部用户访问顺顺利利。不过这种方法非常不安全,毕竟administrator的权力太大,权限太高,可以轻松实现对页面的修改和删除操作。



   
      
www.ad119.cn/bbs/attachments/computer/20090105/2009159029484778014.jpg

   
   
      图14
   



    第二步:将对应的IUSER_CHINA-914340F04帐户添加到对文件夹访问的属性窗口,并给予读取和运行,列出文件夹目录以及读取权限。(如图15)



   
      
www.ad119.cn/bbs/attachments/computer/20090105/2009159029531778015.jpg

   
   
      图15
   



    第三步:另外为了保险还应该将IUSER_CHINA-914340F04帐户添加到对PHP文件夹访问的属性窗口中,给予并给予读取和运行,列出文件夹目录以及读取权限。(如图16)



   
      
www.ad119.cn/bbs/attachments/computer/20090105/2009159029578778016.jpg

   
   
      图16
   





   
      
www.ad119.cn/bbs/attachments/computer/20090105/2009159029593778017.jpg

   
   
      图17
   


   
      
www.ad119.cn/bbs/attachments/computer/20090105/2009159029593778018.jpg

   
   
      图18
   


    这种方法解决了故障问题后可以实现外部用户不需要输入任何验证信息就可以顺利访问站点的目的,而且也不会给网站带来极大的安全隐患。
五、总结:
    实际上本文是循序渐进的解决了PHP在IIS环境下的“无权查看网页,基于所提供的凭据,您没有权限查看此目录或网页,HTTP错误 401.3——访问被资源ACL拒绝”问题。相比之下第一种和第二种用于定位问题所在,在实际中并不可取,因为这样不方便用户浏览页面,而且在容易造成安全隐患;最后第三种方法才是真正的解决方案。不过本文介绍的三种方法是为了让读者开阔思路,真正从实例理解IIS中相应的设置信息,在关键时候可以解决大问题。 <
页: [1]
查看完整版本: 从权限入手解决IIS PHP环境故障