Frage

Innerhalb von PHP (XAMPP), das auf einem Windows XP -Computer installiert ist, versuchen Sie, ein DIR zu lesen, das auf einem lokalen Netzwerkserver existiert. Ich benutze is_dir() Um zu überprüfen, ob es ein Dir ist, das ich lesen kann.

In Windows Explorer tippe ich ein \\\server\dir und dieses Dir wird gezeigt. Wenn ich ein Netzwerk -Laufwerk zuordnen kann, kann es mit darauf zugreifen z:\dir auch.

In PHP habe ich dieses Skript:

<?php if( is_dir($dir){ echo 'success' } ) ?>

Zum $dir Ich habe es versucht:

  • /server/dir
  • //server/dir
  • \server\dir
  • \\server\dir
  • \\\\server\\dir

und

  • z:\dir
  • z:\\dir
  • z:/dir
  • z://dir

Aber ich bekomme nie Erfolg? Irgendeine Idee? Danke

War es hilfreich?

Lösung

Ich habe es gelöst, indem ich einige Dinge in der Registrierung des Servers geändert habe, wie in der letzten Antwort dieser Diskussion erläutert:

http://bugs.php.net/bug.php?id=25805

Vielen Dank an Volkerk und Gumbo sowieso! Ich liebe Stackoverflow und ihre großartigen Leute, die dir so unglaublich schnell helfen !!

Bearbeiten (von php.net entnommen):

Der Dienst verfügt über einen begrenzten Zugriff auf Netzwerkressourcen wie Aktien und Pipes, da er keine Anmeldeinformationen hat und mithilfe einer NULL -Sitzung eine Verbindung herstellen muss. Der folgende Registrierungsschlüssel enthält die NullSessionPipes und NullSessionshares -Werte, mit denen die Rohre und Freigaben angeben, zu denen Null -Sitzungen herstellen können: hkey_local_maachine system currentControlSet dienste lanmanserver parameters Alternativ können Sie Alternativ den Regent -Wert hinzufügen. und stellen Sie es auf 0 ein, damit alle Nullsitzungen auf alle auf dieser Maschine erstellten Rohre und Aktien zugreifen können. "

Fügen Sie Ihrem Registery restrictnullSessAccess = 0 hinzu.

Andere Tipps

Sie lassen XAMPP wahrscheinlich Apache als Dienst installieren und führen die PHP -Skripte durch diesen Apache aus. Und der Apache -Dienst (laufend als Lokalisystem) darf nicht so zugreifen, wie Ihr Benutzerkonto ist.

Ein Dienst, der im Kontext des Lokalsystemkontos ausgeführt wird, erbt den Sicherheitskontext des SCM. Der Benutzer SID wird aus dem Wert von Security_local_System_rid erstellt. Das Konto ist keinem protokollierten Benutzerkonto zugeordnet.
Dies hat mehrere Auswirkungen:
...
   * Der Service präsentiert die Anmeldeinformationen des Computers an Remote -Server.
...

Sie können dies testen, indem Sie den Apache als Konsolenanwendung starten (apache_start.bat im XAMPP -Verzeichnis sollte dies tun) und das Skript erneut ausführen. Sie können sowohl Vorwärts- als auch rückständige Schrägstriche im UNC -Pfad verwenden. Ich würde vorschlagen, // Server /Freigabe zu verwenden, da PHP sich nicht um /in String -Literalen kümmert.

<?php
$uncpath = '//server/dir';
$dh = opendir($uncpath);
echo "<pre>\n";
var_dump($dh, error_get_last());
echo  "\n</pre>";

Versuchen Sie das file: URI -Schema:

file://server/dir
file:///Z:/dir

Der Beginn ist immer file://. Das nächste Pfadsegment ist der Server. Wenn es auf Ihrer lokalen Maschine liegt, lassen Sie es leer (siehe zweites Beispiel). Siehe auch Datei -URIs in Windows.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top