我的网站使用的是 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 应用程序。
要使用 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