# Netzlaufwerk auslesen



## Sven90 (19. März 2010)

Hey Leute,

hab da mal eine Frage. Habe lange Google gequält und nun weiß ich nicht weiter. Meinen Fehler konnte ich leider nicht in Google finden 
Meine Situtation:
hab einen Windows Server mit IIS und PHP (DC4). Funktioniert auch alles einwandfrei. Der Server läuft als Webserver. Dazu gibt es noch einen FileServer DC1. Nun möchte ich gerne ein Verzeichnis vom FileServer auf der Website auslesen. Das Verzeichnis (DC1) ist eine Freigabe. Diese Freigabe ist am Webserver als Netzlaufwerk (K:\\) verbunden. Auf dem Webserver ist ein Administrator angemeldet, der Vollzugriff auf dieses Verzeichnis hat, und im DC1 auch als Domänen-Admin eingetragen ist.
Soweit so gut, nun versuche ich das Laufwerk K auszulesen, da es ja als Laufwerk hinzugefügt ist.
Das ganze sieht dann so aus:

```
<?php 
    $dir = opendir("K:\\\\"));
    while (($file = readdir($dir)) !== false) { 
       echo $file.'<br />'; 
    }   
   closedir($dir); 
?>
```
Wenn ich Laufwerk C, oder D auslese funktioniert das einwandfrei. Wenn ich auf das eingebunden Netzlaufwerk K zugreifen will bekomm ich eine *Warning: failed to open dir: No error in C:\Inetpub\wwwroot...*

Wenn ich das ganze abfrage mit

```
if($dir = opendir("K:\\\\"))
```
bekomme ich false zurück.

Woran könnte das liegen? Was kann ich sonst machen um das Verzeichnis vom anderen Rechner aufzurufen?

Vielen Dank für Tipps im Voraus 

mfG
Sven


----------



## Flex (19. März 2010)

Du musst auch PHP sagen, dass die Adresse sich im Netzwerk befindet und eben kein lokales Laufwerk ist.

Normalerweise wäre das unter Windows:


```
\\[rechnername]\[Pfad]
```

Wobei ich mir nicht sicher bin, ob PHP das wirklich unterstützt.


----------



## saftmeister (19. März 2010)

Du hast wirklich Google bemüht?

Gleich das erste Ergebnis sieht zu mindest ansatzweise gut aus: http://bugs.php.net/25805


----------



## Sven90 (20. März 2010)

Moin



> \\[rechnername]\[Pfad]


Mit einem Netzwerkfreigabepfad habe ich das auch schon probiert, das hat nicht funktioniert. Darum habe ich die Fragabe am Webserver als Laufwerk gemountet, dachte wenn ein Laufwerksbuchstabe davor steht geht das etwas einfacher.



> Du hast wirklich Google bemüht?


Ja, habe ich. Allerdings dein Suchbegriff hab ich nicht versucht. Die Ergebnisse werde ich alle durchschauen. Danke .

Gruß


----------



## Dr Dau (20. März 2010)

Hallo!


```
<?php
error_reporting(E_ALL);

    $dir = opendir("\\\\Computername\\K$");
    while (($file = readdir($dir)) !== false) {
       echo $file.'<br />';
    }
   closedir($dir);
?>
```
"Computername" sollte selbsterklärend sein. 
"K$" ist die Freigabebezeichnung für Laufwerk K.

Und wenn es kein Laufwerk ist, sondern ein Verzeichnis, dann ist es so korrekt:

```
$dir = opendir("\\\\Computername\\Freigabename");
```
Ein bestimmtes Verzeichnis sprichst Du so an:

```
$dir = opendir("\\\\Computername\\Freigabename\\Verzeichnisname");
```
Vor jedem weiteren Verzeichnisnamen setzt Du dann auch einen doppelten Backslash \\.

Prinzipiell funktioniert es zwar auch wenn in den Verzeichnisnamen Leerzeichen enthalten sind, allerdings könnte es auch Probleme geben.
Daher würde ich alle Leerzeichen entfernen bzw. durch _ ersetzen.

Gruss Dr Dau


----------

