7 Stimmen

PHP is_dir() gibt auf einem Windows-Netzwerkspeicherlaufwerk false zurück

Ich habe ein Netzlaufwerk auf Laufwerksbuchstabe X:\ gemappt, das zu einer externen Festplatte mit dem Pfad "\\X-Drive\Public\Data" führt.

Ich verwende 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 führe den Zend Apache-Dienst als Administratorbenutzer aus. Ich weiß, dass dies ordnungsgemäß funktioniert, da im Task-Manager der httpd.exe-Prozess den richtigen Benutzer anzeigt.

Das Laufwerk ist tatsächlich gemappt. Ich habe versucht, es mit verschiedenen Benutzern zuzuweisen, einschließlich des gleichen Benutzers, den Zend Apache verwendet, jedoch ohne Erfolg.

Ich habe jeden Beitrag zu diesem Thema gelesen, den ich finden konnte. Jedes Problem, dem ich begegnet bin, besteht entweder aufgrund von Benutzerberechtigungen oder eines Tippfehlers. Ich sehe nicht, wie mein Problem in eine dieser Kategorien fallen könnte.

Ich habe auch versucht:

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

Ich verwende Windows Vista x64, und der Produktionscode wird auf Windows 7 x64 ausgeführt.

Auf welche anderen Probleme könnte ich stoßen?

9voto

Lawrence Cherone Punkte 44625

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

Wenn Sie die IP oder den Hostnamen verwenden, sollte es einwandfrei 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

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X