Windows Server 2008 R2 IIS 7.5 PHP 5.3 与 Drupal v.7.26 上的文件上传权限问题

Windows Server 2008 R2 IIS 7.5 PHP 5.3 与 Drupal v.7.26 上的文件上传权限问题

我的网站使用的是 Drupal 版本:7.26 服务器上的操作系统是 Windows Server 2008 R2 Web 服务器 $_SERVER["SERVER_SOFTWARE"]: Microsoft-IIS/7.5 服务器 API: CGI/FastCGI

PHP Version: 5.3.28
file_uploads: On
post_max_size: 75M
upload_max_filesize: 50M
upload_tmp_dir: C:\inetpub\wwwroot\tmp
memory_limit: 128M
open_basedir: C:\inetpub\wwwroot;C:\inetpub\wwwroot\tmp

当我进入 /admin/config/media/file-system

我看到错误消息:

The directory sites\default\files exists but is not writable and could not be made writable.
The directory tmp exists but is not writable and could not be made writable.

公共文件系统路径:sites\default\files 临时目录:tmp

我已设置文件夹权限

C:\inetpub\wwwroot\tmp : IIS_IUSRS : Full control
C:\inetpub\wwwroot\sites\default\files : IIS_IUSRS : Full control

我以管理员用户身份工作:C:\Users\Administrator\Downloads>echo %username% Administrator

我无法更改这些文件夹的只读属性。每次我进行此更改并按下“应用”按钮,然后选中“将更改应用于此文件夹、子文件夹和文件”,然后按下“确定”按钮,它都会显示“正在应用属性...”对话框,完成后我按下文件夹属性对话框上的“确定”按钮将其关闭。当我再次打开“属性”对话框时,我看到“只读”再次被选中。我该如何修复它?

答案1

我已找到这个问题的原因。

要解决这个问题:

在 IIS 管理器的匿名身份验证中设置正确的权限。选择应用程序池标识而不是默认的 IUSR 内置帐户,保存新设置并重新启动 Web 应用程序。

详细说明请阅读:http://www.iis.net/learn/get-started/planning-for-security/understanding-built-in-user-and-group-accounts-in-iis

要使用 IIS 管理器授予匿名帐户网络权限,请执行以下操作:

单击“开始”,键入 INetMgr.exe,然后单击 Enter。如果出现提示,请单击“继续”以提升您的权限。

在“连接”部分,单击计算机名称旁边的“+”按钮。

在 IIS 管理器中,双击要管理的站点。

在功能视图中,双击身份验证。

选择“匿名身份验证”,然后单击“操作”窗格中的“编辑”。

在编辑匿名身份验证凭据对话框中,单击特定用户选项,然后单击设置。

在设置凭据对话框中,输入所需的用户名和密码,然后单击确定。

另外,在 Drupal Web 应用程序应可写入的文件夹上为 IIS AppPool\DefaultAppPool 设置完全权限。在我的情况下,有两个文件夹:

icacls "c:\inetpub\wwwroot\sites\default\files" /grant "IIS AppPool\DefaultAppPool":F
icacls "c:\inetpub\wwwroot\tmp" /grant "IIS AppPool\DefaultAppPool":F

另外,在管理文件系统 /admin/config/media/file-system 中设置正确的路径:

公共文件系统路径:sites\default\files

临时目录:tmp

相关内容