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

JuC*_*lot 36 php iis-7 file-permissions windows-server-2008

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

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

任何帮助都会非常感激,

问候,

朱利安

tom*_*umb 69

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

  • IUSR
  • IIS AppPool\<<AppPoolName>>

  • 非常感谢,当我向IUSR提供书面许可时,它会起作用! (10认同)
  • 为什么应用程序池? (2认同)
  • @svandragt,因为如果您的应用程序使用"应用程序池标识"运行,则这是它使用的帐户 (2认同)
  • &lt;&lt;AppPoolName&gt;&gt; 可以是 DefaultAppPool (2认同)

Tri*_*IER 26

实际上,它有点复杂.

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

<?php var_dump(ini_get('fastcgi.impersonate')); ?>
Run Code Online (Sandbox Code Playgroud)

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

**情况1**

如果您的浏览器显示:

string(1) "1"
Run Code Online (Sandbox Code Playgroud)

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

%windir%\system32\inetsrv\appcmd.exe list config "Default Web Site" ^
/section:anonymousAuthentication
Run Code Online (Sandbox Code Playgroud)

您将收到如下答案:

<system.webServer>
  <security>
    <authentication>
      <anonymousAuthentication enabled="true" userName="IUSR" />
    </authentication>
   </security>
</system.webServer>
Run Code Online (Sandbox Code Playgroud)

您要查找的信息是标记username属性的值anonymousAutthentification.

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

**案例2**

如果您的浏览器显示:

string(1) "0"
Run Code Online (Sandbox Code Playgroud)

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


And*_*rea 9

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

  • 你怎么知道运行PHP的帐号? (4认同)
  • 要确切地知道您需要为哪个用户授予写入权限,请检查我的答案. (2认同)