2012-11-06 9 views
7

Ich habe ein Netzwerklaufwerk zugeordnet Laufwerksbuchstaben X: \ auf eine externe Festplatte mit dem Pfad "\\ X-Drive \ Public \ Data" gehen.PHP is_dir() gibt false auf Windows-Netzwerklaufwerk zurück

Ich benutze Zend Server mit Apache.

Mein PHP-Befehl ist einfach

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

Dinge, die Sie wissen sollten:

Der Code:

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

funktioniert wie erwartet.

Ich verwende den Zend Apache Service als Administrator Benutzer. Ich weiß, dass das richtig funktioniert, da der Prozess httpd.exe im Task-Manager den richtigen Benutzer anzeigt.

Das Laufwerk ist tatsächlich zugeordnet. Ich habe versucht, es mit mehreren Benutzern zuzuordnen, um den gleichen Benutzer einzuschließen, den Zend Apache vergeblich benutzt.

Ich habe jeden Beitrag zu diesem Thema gelesen, die ich finden konnte. Jedes Problem, auf das ich gestoßen bin, besteht entweder aufgrund von Benutzerrechten oder eines Tippfehlers. Ich sehe nicht, wie mein Problem in eine der beiden Kategorien fällt.

habe ich auch versucht:

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

ich Windows Vista x64 leite und der Produktionscode wird in Windows 7 x64 laufen.

Mit welchen anderen Problemen könnte ich anfangen?

Antwort

8

Für Netzwerkfreigaben sollten Sie UNC-Namen verwenden: "//server/share/dir/file.ext"Source

Wenn Sie die IP-Adresse oder den Hostnamen verwenden, sollte es funktionieren:

$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

Danke für die prägnante Beispiel und Erklärung! $ isFolder = is_dir ("// NAS/Main Disk"); var_dump ($ isFolder); // TRUE war der beste Weg für mich. Vielen Dank! – Wes