首页 >  应用与开发  >  系统维护

NTFS环境下IIS+PHP读写被禁止解决一例

发布日期:2010-03-16 

IIS+PHP是运行PHP较为廉价的组合,尤其对需要在本地机测试PHP程序的用户来说,它既方便又实用,只需要添加Windows安装光盘(非Ghost版)里的Internet信息服务(IIS,13.4兆)和EasyPHP4(近8兆,网上有下载我)、然后设置一下IIS即可在浏览器中打开“默认网站”虚拟目录里的PHP脚本程序(详情可参阅 >> Windows XP下简单配置本机PHP调试环境)。在磁盘为Fat32格式下,IIS+PHP模式的实现非常简单,但在NTFS格式的磁盘环境里,用户“IUSR_计算机用户”尽管被指派了足够的权限,fopen()和fwrite()仍然被拒绝,运行的时候会出现类似以下的错误:

fopen(文件名): failed to open stream: Permission denied in php程序 on line 行号

考虑到是用户读取和写入的权限被拒绝,很多人会自然而然地进入IIS设置“默认网站”主目录的读取和写入权限,然而,这些权限都打勾之后,问题依然存在。在用户指派权限的管理中给用户“IUSR_计算机用户”重新指派各种权限也难以解决问题,有人说添加EveryOne用户并指定相应权限给它可以避免上述错误,事实上,“IUSR_计算机用户”就是一个基于IIS的EveryOne用户,它的权限已经足够了。

那么,必须考虑其他的解决途径。其实很简单,就是“默认网站”的主目录共享问题––

在资源管理器中找到“默认网站”的主目录,右键单击它,选取弹出菜单中的“共享和安全(H)”并单击它,接着在弹出的目录属性窗口设置该目录为共享,特别注意勾选“允许网络用户更改我的文件(W)”这个选项。共享设置成功后,fopen()和fwrite()等函数的运行不再有障碍。

共享一个目录可能存在一些安全隐患,如果用户有这方面的担忧,则应该增加一些防范措施。

以上解决方案在Windows XP SP2环境下测试通过。