У меня есть сервер IIS 7 с запущенным на нем приложением PHP. Это приложение должно иметь возможность подключаться к сетевому диску, для которого требуются имя пользователя и пароль. Этот диск подключается при входе в систему для пользователей с net use \\server /user:
. Пользователь не вошел в систему. Как я могу подключить этот диск для использования в приложении?
Я попытался изменить пул приложений для своего пользователя, но мне все еще отказывают. Я пробовал запускать командный файл, используя его как систему. Я пробовал создать виртуальный каталог, но мне не понравилось требуемое имя пользователя. Имя пользователя содержит \ и. Пользователь также не является пользователем, распознаваемым Windows. У меня нет контроля над сетевым диском, только доступ к нему.
У меня была аналогичная проблема, когда мне нужен доступ к общему сетевому ресурсу, и я решил ее, выполнив следующие действия:
1) Создайте учетную запись с тем же именем пользователя и паролем на сервере переднего плана и на файловом сервере. Убедитесь, что срок действия пароля не истек или его необходимо изменить.
2) Создайте сетевой ресурс и дайте новой учетной записи права чтения / записи. Я также проверил, что могу подключиться с внешних серверов, используя новую учетную запись, чтобы убедиться, что на пути нет брандмауэров.
3) На сервере переднего плана я включил учетную запись в группу IIS_IUSRS, которая косвенно дает ему права «Вход в систему в качестве пакетного задания».
4) Выполните следующую команду, чтобы предоставить права учетной записи.
aspnet_regiis -ga <your_app_pool_user>
Узнать больше: Как: создать учетную запись службы для приложения ASP.NET 2.0 (MSDN)
5) Перезапустите WAS и IIS, чтобы убедиться, что изменения в членстве в группе учетных записей сохранятся, если вы попытаетесь использовать учетную запись.
C:> net stop was /y
C:> net start w3svc
6) Создайте пул приложений и установите идентификацию в дополнительных настройках.
Это та часть, где я застрял в IIS 8 в Windows Server 2012 с сообщениями об ошибках при попытке установить личность.
Из диспетчера IIS я получил следующее диалоговое окно с ошибкой: «При выполнении этой операции произошла ошибка. Подробности: значение не попадает в ожидаемый диапазон».
Пытаясь установить идентификатор пула приложений из командной строки, я получаю аналогичную ошибку:
C:> appcmd set config /section:applicationPools
/[name='test-pool'].processModel.identityType:SpecificUser
/[name='test-pool'].processModel.userName:MyAccountName
/[name='test-pool'].processModel.password:P@ssw0rd
ERROR ( hresult:80070057, message:Failed to commit configuration changes.
The parameter is incorrect.
)
Когда я удаляю последний параметр, пароль, команде удастся изменить тип удостоверения и установить имя пользователя, но я так и не понял, почему я не смог установить пароль, поэтому я ответил на редактирование своего applicationHost.config файл напрямую. К сожалению, пароль оказывается открытым текстом.
<configuration>
...
<system.applicationHost>
<applicationPools>
...
<add name="test-pool" managedRuntimeVersion="v4.0">
<processModel identityType="SpecificUser"
userName="MyAccountName" password="P@ssw0rd" />
</add>
...
</applicationPools>
...
</system.applicationHost>
...
</configuration>
7) Наконец, я настроил свое веб-приложение на использование пула приложений, и оно могло без проблем получить доступ к общему сетевому ресурсу.
Я бы подключил сетевой диск с использованием альтернативных учетных данных, а затем подключил бы приложение PHP к соответствующей букве диска. Имейте в виду, что если Windows не имеет доступа к диску, то и PHP нет, поскольку PHP не поддерживает аутентификацию Windows.