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

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

我该如何解决这个问题?我试图给IIS_IUSR和IUSR_myservername(右键单击我的文件夹)都是正确的,但它不起作用。

任何帮助将不胜感激,

问候

朱利安


答案 1

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

  • IUSR
  • IIS AppPool\<<AppPoolName>>

答案 2

实际上,它有点复杂。

首先要做的是在相关网站上创建一个简单的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>

您要查找的信息是标记的属性值。usernameanonymousAutthentification

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

** 案例 2 **

如果您的浏览器显示:

string(1) "0"

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


推荐