Вопрос или проблема
У меня есть веб-сайт на версии Drupal: 7.26
ОС на сервере: Windows Server 2008 R2
Веб-сервер $_SERVER[“SERVER_SOFTWARE”]: Microsoft-IIS/7.5
API сервера: CGI/FastCGI
Ядро
Версия PHP: 5.3.28
file_uploads: Включено
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
Я вижу сообщения об ошибках:
Каталог sites\default\files существует, но недоступен для записи и не может быть сделан доступным для записи.
Каталог tmp существует, но недоступен для записи и не может быть сделан доступным для записи.
Путь к публичной файловой системе: sites\default\files
Временный каталог: tmp
Я установил разрешения на папки
C:\inetpub\wwwroot\tmp : IIS_IUSRS : Полный доступ
C:\inetpub\wwwroot\sites\default\files : IIS_IUSRS : Полный доступ
Я работаю как пользователь Администратор:
C:\Users\Administrator\Downloads>echo %username%
Администратор
Я не могу изменить атрибуты только для чтения для этих папок.
Каждый раз, когда я меняю это и нажимаю кнопку Применить
и
галочка на “Применить изменения к этой папке, подпапкам и файлам”
установлена, и нажимаю кнопку OK, появляется диалоговое окно Применение атрибутов…
Когда это заканчивается, я нажимаю кнопку OK в диалоговом окне свойств папки, закрывая его.
Когда я снова открываю диалоговое окно свойств, я вижу, что атрибут только для чтения снова установлен.
Как я могу это исправить?
Я выяснил причину этой проблемы.
Чтобы исправить это:
Установите правильные разрешения в диспетчере IIS в разделе Анонимная аутентификация. Вместо встроенной учетной записи IUSR выберите идентичность пула приложений, сохраните новые настройки и перезапустите веб-приложение.
Читать подробные инструкции на: http://www.iis.net/learn/get-started/planning-for-security/understanding-built-in-user-and-group-accounts-in-iis
Чтобы предоставить анонимной учетной записи права в сети с помощью диспетчера IIS:
Щелкните Пуск, введите INetMgr.exe и нажмите Enter. Если будет предложено, нажмите Продолжить для повышения ваших прав.
В разделе Подключения щелкните на кнопку + рядом с именем вашего компьютера.
В диспетчере IIS дважды щелкните сайт, который вы хотите администрировать.
В режиме просмотра функций дважды щелкните Аутентификация.
Выберите Анонимную аутентификацию, а затем нажмите Изменить в области Действия.
В диалоговом окне Изменение учетных данных анонимной аутентификации выберите параметр Конкретный пользователь, а затем нажмите Установить.
В диалоговом окне Установка учетных данных введите желаемое имя пользователя и пароль, а затем нажмите OK.
Также установите полный доступ для IIS AppPool\DefaultAppPool на папки, которые должны быть доступными для записи веб-приложением Drupal.
В моем случае это две папки:
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
Ответ или решение
У вас возникла проблема с правами на загрузку файлов в среде Windows Server 2008 R2 с использованием IIS 7.5 и Drupal 7.26. Ошибки, которые вы видите на странице конфигурации файловой системы Drupal, связаны с тем, что соответствующие директории не имеют необходимых прав для записи. Вот пошаговое руководство по решению этой проблемы:
Проверка и настройка прав доступа
-
Права доступа к папкам:
Убедитесь, что используемый вами пул приложений в IIS имеет достаточно прав для записи в указанные директории.Для этого выполните следующие команды в командной строке (от имени администратора):
icacls "C:\inetpub\wwwroot\sites\default\files" /grant "IIS AppPool\DefaultAppPool":F icacls "C:\inetpub\wwwroot\tmp" /grant "IIS AppPool\DefaultAppPool":F
Эти команды обеспечат полные права (Full Control) для пула приложений
DefaultAppPool
на указанные папки. -
Настройка анонимной аутентификации:
Вам нужно изменить параметры анонимной аутентификации в IIS на использование идентификации пула приложений. Сделайте следующее:- Откройте IIS Manager (начните с нажатия
Win + R
, введитеinetmgr
). - Найдите ваш сайт в разделе "Connections".
- Откройте раздел "Authentication" в панели функций.
- Выберите "Anonymous Authentication", затем нажмите "Edit" в правой панели.
- Выберите опцию "Specific user" и укажите учетные данные (если это необходимо), либо оставьте по умолчанию, чтобы использовать Pool Identity.
- Подтвердите изменения и перезапустите веб-сайт.
- Откройте IIS Manager (начните с нажатия
Настройка атрибутов папок
-
Проверка атрибутов папок:
Если папки остаются с атрибутом "Только для чтения", это не критично для их работы, так как IIS требует прав на запись, а не изменения атрибутов. Тем не менее, можно попробовать изменить этот атрибут командой:attrib -R "C:\inetpub\wwwroot\sites\default\files" attrib -R "C:\inetpub\wwwroot\tmp"
Проверка настроек в Drupal
- Настройка путей в Drupal:
Убедитесь, что пути указаны правильно в админке Drupal:- Откройте
admin/config/media/file-system
. - Убедитесь, что "Public file system path" установлен на
sites/default/files
. - Убедитесь, что "Temporary directory" установлен на
tmp
.
- Откройте
Заключение
После выполнения всех вышеуказанных шагов ваши директории должны стать доступными для записи, и сообщение об ошибке должно исчезнуть. При возникновении дополнительных проблем проверьте логи IIS и Drupal на наличие более подробной информации об ошибках.
Если у вас возникнут еще вопросы, не стесняйтесь обращаться за помощью!