Я пытаюсь подключиться к сетевому ресурсу (его UNC) из браузера, но не могу.
Если я запустил свой сценарий из командной строки, все будет в порядке, и я могу получить доступ к ресурсу. Я также могу перейти к нему через проводник файлов Windows, поэтому я не думаю, что что-то не так с моим кодом или с разрешениями для моей учетной записи Windows.
Мой скрипт выглядит так:
$dir = '\\\\some\path'; if (is_dir($dir)) { echo 'dir exists'; } else { echo 'dir does not exist'; }
Я также попытался использовать DirectoryIterator($dir)
, но это PHP Warning: opendir(...): Access is denied. (code: 5)
эту ошибку исключения: PHP Warning: opendir(...): Access is denied. (code: 5)
PHP Warning: opendir(...): Access is denied. (code: 5)
Вот моя настройка:
– Windows Server 2008 R2
– IIS 7.5
– PHP 5.3.13
– Анонимная аутентификация отключена
– включена проверка подлинности Windows
И у меня есть настройки в моем php.ini:
cgi.force_redirect=0 cgi.fix_pathinfo=1 fastcgi.impersonate=1
Чтобы добавить к путанице, я смог подключиться через браузер в этих сценариях:
1 – использование system("net use \"".$dir."\" ".$pass." /user:".$user." /persistent:no>nul 2>&1");
Но для этого требуется жестко кодировать пароль пользователя Windows, который я не могу сделать.
2 – Установка fastcgi.impersonate=0
Но это означает, что пользователю придется проходить проверку подлинности каждый раз, когда они попадают в скрипт, что неприемлемо.
3 – Включение анонимной аутентификации, отключение проверки подлинности Windows, но мне нужно, чтобы Windows Auth была включена, чтобы узнать, кто обращается к сайту.
Я не знаю, имеет ли это какое-либо отношение к моей проблеме, но я получаю разные значения для $_SERVER['USERNAME']
при запуске моего сценария из браузера и из командной строки.
Это проблема с разрешениями? Есть ли токен аутентификации, который не передается?
редактировать
К сожалению, сопоставление общего ресурса с сетевым диском не является вариантом.