У меня есть сетевой диск, сопоставленный с буквой X: \, идущей на внешний жесткий диск с контуром «\\ X-Drive \ Public \ Data».
Я использую Zend Server с Apache.
Моя команда PHP проста
$isFolder = is_dir("x:/"); echo($isFolder); //FALSE
Вещи, которые вы должны знать:
Код:
$isFolder = is_dir("c:/"); echo($isFolder); //TRUE
работает, как ожидалось.
Я использую службу Zend Apache как пользователь-администратор. Я знаю, что это работает правильно, потому что в диспетчере задач процесс httpd.exe показывает правильного пользователя.
Привод действительно отображен. Я попытался сопоставить его с несколькими пользователями, чтобы включить того же пользователя, который Zend Apache использует безрезультатно.
Я прочитал каждый пост по этому вопросу, который мог найти. Каждая проблема, с которой я столкнулась, существует либо из-за прав пользователя, либо из-за опечатки. Я не вижу, как моя проблема попадает в любую категорию.
Я также пробовал:
system('net use X: "\\x-drive\public" password1 /user:username /persistent:no'); $isFolder(is_dir("x:/")); echo($isFolder); //FALSE
Я запускаю Windows Vista x64, и производственный код будет работать в Windows 7 x64.
С какими еще проблемами я могу работать?
Для общих сетевых ресурсов следует использовать имена UNC: "//server/share/dir/file.ext"
Источник
Если вы используете IP-адрес или имя хоста, он должен работать нормально:
$isFolder = is_dir("\\\\NAS\\Main Disk"); var_dump($isFolder); //TRUE $isFolder = is_dir("//NAS/Main Disk"); var_dump($isFolder); //TRUE $isFolder = is_dir("N:/Main Disk"); var_dump($isFolder); //FALSE