你的位置:首页 > 服务器类

从权限入手解决IIS+PHP环境故障(图)

2008-11-15 浏览:(1887) 服务器类 评论(0)

在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.phphttp://localhost/index.php均出现错误提示,具体页面显示为“无权查看网页,基于所提供的凭据,您没有权限查看此目录或网页,HTTP错误 401.3——访问被资源ACL拒绝”。(如图1)


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


   然而在同一个站点的其他页面文件,只要不是PHP语言建立的都可以正常浏览和查看,包括HTML静态页面和ASP动态网页文件。

二、修改验证方式解决问题:

   既然IIS反馈回的信息是“HTTP错误 401.3——访问被资源ACL拒绝”,所以笔者也针对访问权限进行排查故障工作。

第一步:在IIS中的默认网站上右键选择“属性”来查看该站点的相关属性信息。(如图3)


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


   第三步:笔者在“身份验证方法”处看到了默认情况下IIS是通过建立的IUSER_CHINA-914340F04以及相应的密码访问IIS页面信息的,这个帐户也是由IIS自动创建的。(如图5)




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


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


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


   第七步:一般情况下在IIS中调用查看该页面是不需要进行集成Windows身份验证的,所以没有出现要求输入具备相应权限的Windows系统帐户和密码,不过如果要是通过网络或者浏览器访问就需要填写具有足够权限的Windows系统帐户和密码。(如图9)


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


   至此我们就解决了IIS中PHP页面访问所出现的“HTTP错误 401.3——访问被资源ACL拒绝”故障。不过这种设置在访问上带来了一定的不方便,必须知道Windows系统的帐户和密码才可以浏览,要知道一般网站都是给外部用户使用的,他们并不会知道服务器的密码与管理帐户,就算知道了也会给服务器的安全带来巨大的隐患。所以我们还需要从权限入手,解决问题。

三、修改匿名访问帐号解决实际问题:

   既然通过修改访问方式为“集成Windows身份验证”能够解决实际问题,这就说明问题的根源不在PHP上,而在于权限的设置。

我们再次尝试在IIS中的默认网站上右键选择“属性”来查看该站点的相关属性信息。找到“目录安全性”标签,然后点“匿名访问和身份验证控制”旁边的“编辑”按钮。将“身份验证方法”处看到的IUSER_CHINA-914340F04帐户通过“浏览”按钮选择管理员administrator帐户,密码也设置相应的密码。(如图11)


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


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

四、修改文件夹权限解决问题:

   上面两种修改办法都可以解决问题,这更加说明了问题出在权限而不是PHP的安装上。从网上找到的资料就是需要容许IUSER_CHINA-914340F04这个IIS临时调用帐号具备对IIS发布目录的访问权限,如果是PHP页面还需要具备执行权限。

第一步:由于笔者没有修改默认的IIS发布目录路径,所以我们进入到c:\inetpub目录,找到WWWROOT目录,在其上点鼠标右键选择“共享和安全”。(如图14)


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


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


   第四步:接下来就应该可以顺利访问了,浏览PHP页面不会出现诸如“无权查看网页,基于所提供的凭据,您没有权限查看此目录或网页,HTTP错误 401.3——访问被资源ACL拒绝”的错误提示了。

小提示:如果还是有问题我们只需要将IUSER_CHINA-914340F04帐户的密码重新设置下。(如图17)最后再在“身份验证方法”处的IUSER_CHINA-914340F04帐户密码处输入相应的字符即可,记得要把容许IIS控制密码前的对勾去掉。(如图18)


   这种方法解决了故障问题后可以实现外部用户不需要输入任何验证信息就可以顺利访问站点的目的,而且也不会给网站带来极大的安全隐患。

五、总结:

   实际上本文是循序渐进的解决了PHP在IIS环境下的“无权查看网页,基于所提供的凭据,您没有权限查看此目录或网页,HTTP错误 401.3——访问被资源ACL拒绝”问题。相比之下第一种和第二种用于定位问题所在,在实际中并不可取,因为这样不方便用户浏览页面,而且在容易造成安全隐患;最后第三种方法才是真正的解决方案。不过本文介绍的三种方法是为了让读者开阔思路,真正从实例理解IIS中相应的设置信息,在关键时候可以解决大问题。

  • 发表评论
  • 查看评论
【暂无评论!】

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。