IIS 7 / PHP 5.3.6 Отказано в доступе при доступе к сетевому файлу - PullRequest
1 голос
/ 23 мая 2011

ServerA-> 64-битная Windows 2008 (IIS 7 && PHP 5.3.6)

СерверB-> 32-битная Windows 2003 (Fileserver)

Я пытаюсь получить доступ к \ ServerB \ directory1 \ directory2 \ file.abc через fopen через сайт, размещенный на ServerA, и получаю ошибку Permission Denied. Это веб-сайт по умолчанию, использующий пул приложений по умолчанию.

То, что я пытался дать следующим учетным записям или группам в AD полные права доступа к каталогу (и файлу через наследование), и оно все равно выдало ошибку:

  • вручную создал учетную запись IUSR_SERVERA (ранее она не существовала)
  • IIS_WPG
  • Все
  • Сетевая служба
  • Анонимный доступ
  • Аутентифицированные пользователи

Идентификацией для DefaultAppPool является NetworkService, в котором включены 32-разрядные приложения.

IUSR_SERVERA имеет полные права доступа к локальному каталогу php.

Любая помощь приветствуется. Я временно решил проблему, скопировав файл, необходимый локально, в папку wwwroot сервера SERVERA, но это не может быть постоянным решением вообще.

Спасибо

-Mike

Ответы [ 2 ]

2 голосов
/ 24 мая 2011

Спасибо за предложение ProcMon, оно привело меня к ответу.Я не настроил приложение по умолчанию правильно.

Я прочитал и перечитал все, что смог найти, но ничего конкретно не сказано об этом:

Если вам нужен доступ к сетевым файлам с помощью PHP через IIS 7, настройте учетную запись справильные учетные данные в настройках приложения по умолчанию для сайта, на котором вы работаете.

Для этого перейдите в диспетчер IIS

  1. Выберите свой сайт на панели соединений
  2. Щелкните ссылку «Просмотр приложений» на панели «Действия» (в правой части экрана)
  3. Нажмите «Установить настройки приложения по умолчанию» на панели «Действия» на новом экране
  4. Выберите «DefaultAppPool» вРаздел пула приложений
  5. Введите правильные учетные данные в разделе учетных данных физического пути

Знайте, что изменение модели процесса -> Идентификация в расширенных настройках пула приложений по умолчанию не влияло на разрешениеэто произойдет.

1 голос
/ 23 мая 2011

Учетная запись IUSR_SERVERA будет бесполезна, учитывая, что PHP выполняется в пуле приложений по умолчанию, который, как вы сказали, работает как NetworkService.

Что вам нужно сделать, так это дать разрешения на ServerB серверу SERVERA \ NetworkService, поскольку это локальная учетная запись, а не учетная запись AD.

В противном случае вы можете изменить пул приложений по умолчанию на IUSR_SERVERA, и тогда он будет работать, если предположить, что это учетная запись AD, а не локальная.

Если вы все еще не можете это выяснить, возьмите копию ProcMon и проследите за сообщениями о доступах, содержащих желаемый путь, и посмотрите, какова действительная причина отказа ОС и какую учетную запись она пытается использовать. *

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...