2012-11-06 27 views
7

Mam dysk sieciowy zmapowany na literę dysku X: \ przechodzenie na zewnętrzny dysk twardy ze ścieżką "\\ X-Drive \ Public \ Data".PHP is_dir() zwraca false na dysku sieciowym Windows

Używam serwera Zend z Apache.

Moje polecenia PHP jest prosty

$isFolder = is_dir("x:/"); 
echo($isFolder); //FALSE 

Co należy wiedzieć:

Kod:

$isFolder = is_dir("c:/"); 
echo($isFolder); //TRUE 

działa zgodnie z oczekiwaniami.

Używam usługi Zend Apache jako administrator. Wiem, że to działa poprawnie, ponieważ w Menedżerze zadań proces httpd.exe pokazuje właściwego użytkownika.

Dysk jest rzeczywiście odwzorowany. Próbowałem mapować to z kilkoma użytkownikami, aby włączyć tego samego użytkownika, którego używa Zend Apache bez skutku.

Przeczytałem każdy post na ten temat, który mogłem znaleźć. Każdy napotkany problem istnieje z powodu uprawnień użytkownika lub literówki. Nie widzę, jak mój problem należy do żadnej z tych kategorii.

Próbowałem również:

system('net use X: "\\x-drive\public" password1 /user:username /persistent:no'); 
$isFolder(is_dir("x:/")); 
echo($isFolder); //FALSE 

Używam Windows Vista x64, a kod produkcyjny będzie działać w systemie Windows 7 x64.

Z jakimi innymi problemami można się natknąć?

Odpowiedz

8

Dla udziałów sieciowych należy użyć nazw UNC: "//server/share/dir/file.ext"Source

Jeśli używasz IP lub nazwę hosta powinno działać prawidłowo:

$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 
+0

Dzięki za zwięzły przykład i wyjaśnienie! $ isFolder = is_dir ("// NAS/Dysk główny"); var_dump ($ isFolder); // TRUE był dla mnie najlepszą drogą. Dzięki! – Wes