Intereting Posts
Селен: Как утверждать, что определенный элемент присутствует в определенной ячейке определенной таблицы? php artisan migrate throwing Не удалось найти драйвер – Использование Laravel $ _POST не работает в php Получение неправильного результата при использовании запроса CakePHP Zend Framework – установка макета для контроллера Получите реальный профиль изображения в Facebook Как загрузить (поток) большие файлы в symfony2 Будет ли включать ненужные php-файлы в замедление веб-сайта? PHP extension install – ошибка phpize – на NGINX / PHP-FPM PHP – запрашивать одно значение для каждой итерации или извлекать все при запуске и извлекать из массива? Получение подстроки из базы данных Confusion PDO-only проблема: невозможно подключиться через сокет / Access denied / не удается подключиться к серверу (общий хост) Как преобразовать это шифрование C # Rijndael в PHP? Как добавить контакт в список, используя (Отправить сетку) php api Symfony 2 kpn мгновенный генерировать pdf с выходом соответствует зоне безопасности

IIS 7 / PHP 5.3.6 Разрешения, разрешенные при доступе к сетевому файлу

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

ServerB-> 32 бит Windows 2003 (файловый сервер)

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

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

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

Identity для DefaultAppPool является NetworkService и имеет 32-разрядные приложения.

IUSR_SERVERA имеет полные разрешения для локального каталога php.

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

благодаря

-Майк

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

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

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

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

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

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

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

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

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

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