在IIS 7上向PHP添加写入权限

时间:2011-05-04 17:03:14

标签: php iis-7 windows-server-2008 file-permissions

我需要一个PHP脚本才能在目录中拥有写入权限。 PHP 5.3在IIS 7下运行为FastCGI,Windows Server 2008为OP。在我的php错误日志中,当脚本尝试写入文件时,我得到了“权限被拒绝”。

我该如何解决这个问题?我试图将所有权利交给IIS_IUSR和IUSR_myservername(右键单击我的文件夹),但它没有用。

任何帮助都会非常感激,

此致

于连

3 个答案:

答案 0 :(得分:66)

我有相同的设置,我必须给予写入权限:

  • IUSR
  • IIS AppPool\<<AppPoolName>>

答案 1 :(得分:23)

实际上,它有点复杂。

首先要做的是在相关网站上创建一个简单的PHP文件。 (在相关网站上创建文件很重要,因为每个网站可以有不同的设置。)此文件的内容应为:

<?php var_dump(ini_get('fastcgi.impersonate')); ?>

使用浏览器导航到此文件。

**案例1 **

如果您的浏览器显示:

string(1) "1"

然后,您需要执行以下命令(您需要使用您在IIS中为您的网站命名的名称替换“默认网站”):

%windir%\system32\inetsrv\appcmd.exe list config "Default Web Site" ^
/section:anonymousAuthentication

您将收到如下答案:

<system.webServer>
  <security>
    <authentication>
      <anonymousAuthentication enabled="true" userName="IUSR" />
    </authentication>
   </security>
</system.webServer>

您要查找的信息是username代码的anonymousAutthentification属性的值。

  • 如果此值不为空,则其内容是您需要授予其写入权限的用户的名称。
  • 如果此值为空或者缺少属性,则需要向IIS AppPool\AppPoolName授予写入权限(将“AppPoolName”替换为网站应用程序池的名称)。

**案例2 **

如果您的浏览器显示:

string(1) "0"

您需要向IIS AppPool\AppPoolName授予写入权限(将“AppPoolName”替换为您网站应用程序池的名称)。

答案 2 :(得分:9)

您需要提供 PHP 写入权限,而不是IIS。这意味着运行PHP的用户帐户需要权限(可能与运行IIS的用户帐户相同)。