2011-09-08 3 views
1

Итак, у меня есть два сервера (веб-сервер и NAS в одном домене (домен Б)).PHP: Opendir Сетевой диск другого домена

У меня есть PHP-скрипт на веб-сервере (domainB), который перечисляет определенный каталог на NAS.

Когда я выполняю сценарий на своем веб-сервере, он работает. Но если я выполняю сценарий из другого домена (domainA), например, с моей локальной машины, он не работает. Кажется, он останавливается в строке opendir().

У меня XAMPP установлен на моей машине, и если я выполняю этот скрипт с моего локального веб-сервера, он также работает.

«testfolder» - это общая папка на NAS, и разрешение на чтение предоставляется всем.

Кто-нибудь знает, в чем проблема?

Код:

$dir = "//NAS.domainB.test/testfolder"; 

// Open a known directory, and proceed to read its contents 
if (is_dir($dir)) { 
    if ($dh = opendir($dir)) { 
     while (($file = readdir($dh)) !== false) { 
      echo "filename: $file : filetype: " . filetype($dir . $file) . "\n"; 
     } 
     closedir($dh); 
    } 
} 
+0

Следуйте по ответам на эту ссылку, надейтесь, что это поможет. http://stackoverflow.com/questions/6101523/iis-7-php-5-3-6-permission-denied-when-accessing-network-file –

ответ

1

Проблема может быть с ограничениями доступа, конечно. Попробуйте поместить

error_reporting(E_ALL); 

в первой строке кода.

+0

Согласен: вы по сути являетесь гостем при доступе к сценарию из второй домен. opendir вернет false, если есть ошибки разрешений. – horatio

+0

Распечатывается: Предупреждение: opendir (// NAS.domainB.test/testfolder, // NAS.domainB.test/testfolder): Доступ запрещен. (код: 5) в C: \ inetpub \ wwwroot \ navigator \ functions.php в строке 19 Предупреждение: opendir (// NAS.domainB.test/testfolder): не удалось открыть директорию: Плохой дескриптор файла в C: \ inetpub \ wwwroot \ navigator \ functions.php в строке 19 Предупреждение: closedir() ожидает, что параметр 1 будет ресурсом, булевым, указанным в C: \ inetpub \ wwwroot \ navigator \ functions.php в строке 37 – huuerequer

+0

Я нашел Отчет об ошибке php с явно подобной проблемой # 52376. То же самое со мной IIS7.5 и PHP5.3.6. – huuerequer

0

Возможно, я нашел источник своей проблемы и решение.

Я не работал, потому что мой IIS использовал имитатор (возможно, пользователь IUSR), и у него нет разрешений на моем NAS.

Дополнительная информация: http://www.php.net/manual/en/install.windows.iis7.php (см. Олицетворение и доступ к файловой системе).

Решение: Я установил папку со сценарием в качестве приложения в своем IIS и настроен для подключения в качестве конкретного пользователя с разрешением на NAS.

Возможно, это также сработает, если я дам пользователю-читателю IUSR разрешение на чтение на NAS.

Смежные вопросы