Hallo!
Ich suche den richtigen Befehl/eine Möglichkeit, einen Ordner auf einem entfernten Server auszulesen und diese auszugeben.
Ich habe schon an glob und readdir gedacht. Aber dies kommt wohl nicht in Frage.
Wer kann mir helfen?
Danke im Voraus.
Gruß
Florian
geht nicht
Das würde eine Sicherheitslücke darstellen wenn das so einfach ginge, denn dann könntest Du ja auch die ganze Dateistruktur auslesen.
Es gibt meines wissens nach drei Möglichkeiten wie es dennoch geht.
- per ftp eine Verbindung aufbauen und dort auslesen
- die beiden Server miteinander mappen. dafür brauchts aber wohl mindestens ssh Zugang auf beiden.
- Das File Listing auf dem Zielrechner aktivieren und die erstellte HTML-Datei per PHP einzeln durchparsen um an die Dateinamen zu kommen. (file)
Danke erst einmal für die schnelle Antwort. Ich habe wohl vergessen zu erwähnen, daß die beiden Server sich im selben Netzwerk befinden. Die Rechte, den auszulesenden Ordner anzuzeigen und die darin enthaltenen Dateien aufzulisten, sind gegeben. Nur fehlt mir der richtige Befehl.
Es soll so sein:
Server1 dient als Intranetserver.
Server2 stellt gewisse Infos zur Verfügung, die in einem Ordner gespeichert sind. Nun will ich den Inhalt dieses Ordners auslesen und anzeigen lassen.
Gruß
Florian
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]
na dann…
das:
- die beiden Server miteinander mappen. dafür brauchts aber
wohl mindestens ssh Zugang auf beiden.
oder das:
- Das File Listing auf dem Zielrechner aktivieren und die
erstellte HTML-Datei per PHP einzeln durchparsen um an die
Dateinamen zu kommen. (file)
jetzt ist die Frage wie Server2 diese gewissen Infos zur verfügung stellt. Entweder Du versuchst eben über ein gemapptes Laufwerk die Daten sozusagen lokal auszulesen, wobei dann natürlich das mapping immer beim zugriff vorhanden sein muss.
php.net liefert da auch schon ein schönes Beispiel dazu:
Beispiel 2. Liste alle Dateien des aktuellen Verzeichnisses unter Ausschluss von „.“ und „…“ auf
<?php $handle=opendir('.'); <br />while ($file = readdir ($handle)) {
if ($file != "." && $file != "..") {
echo "$file\n";
}
}
closedir($handle);
?\>
wenn das aber nicht geht und lediglich über den Browser dieses Verzeichnis für Server1 dargestellt werden kann dann müsste das etwas anders aussehen…
$file = file("http://10.1.1.2/verzeichnis/");
wobei das natürlich dann die ip und das verzeichnis von/auf dem Server2 sein muss…
Das Ergebnis steckt dann in $file.
$file ist dann ein array wobei jeder key des arrays einer Zeile des html-codes entspricht.
der muss dann eben „nurnoch“ ein wenig angepasst werden.
Am praktischsten ist es also wohl auf Server2 eine eigene readdir.php Datei zur Verfügung zu stellen, die keine html-Formatierung kennt sondern nur zeilenweise die Dateien auflistet.
Daran denken dass der Zeilenumbruch im array hinten mit dran steht sonst gibts evtl weitere Fehlermeldungen…
Hallo und danke erst einmal.
ich habe das Ganze jetzt so gelöst:
Ich habe auf Server2 eine Datei „index.php“ angelegt, in der dann der Ordner ausgelesen wird.
Jetzt auf Server1 einen Link zur Datei gesetzt und gut.
Trotzdem nochmal danke.
Gruß
Florian
hmmm…
also entweder ich versteh das Problem nicht so ganz oder Du nicht was ich gemeint habe…
- Fall
Server1 ist über das Internet zu erreichen
Server2 ist nur im InTRAnet zu erreichen
für den Fall legst Du eine index.php an, die Du dann 1:1 auf dem anderen Rechner ausliest und auf Server1 anzeigen lässt.
- Fall
beide Server sind vom Internet aus zu erreichen
für den Fall reicht ein normaler Link ja auch…
Hallo!
Es kann gut sein, daß ich Dich nicht richtig verstanden habe. Ich habe mich wahrscheinlich auch etwas dumm ausgedrückt.
Ich habe 2 Server, die beide(nur) im Intranet sind.
Nun dient Server1 als Intranetserver, stellt also PHP etc. zur Verfügung. Server2 dient als Datei- und Fileserver. Nun werden täglich x Dateien in einen Ordner auf Server 2 gepusht. Diese sollen von Server1 über den Browser, und nur darüber erreichbar bzw. lesbar sein(es handelt sich um PDF’s).
Deshalb meine oben erwähnte Lösung.
Es ist vielleicht nicht die Beste, aber sicher eine.
Gruß
Florian
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]
I see…
dann ist das auslesen eines Verzeichnisses aber nur der erste Schritt…
Im Prinzip ist denke ich die allerbeste Lösung wenn Du vollen Zugriff auf beide Rechner hast den 2. Server als Netzlaufwerk zu verbinden. Das spart Dir den grössten Codingaufwand.
Wenn Du die Dateien nur von Server1 aufrufen willst, dann kriegst Du ein neues Problem, das Du erst mal lösen müsstest, nämlich dass der Header der Datei mitgeschickt werden muss, sonst kommen vermutlich im Browser nur kyryllische Zeichen raus…
sobald aber ein physischer Link auf den eigenen Rechner da ist passt ja wieder alles…
Dann ist halt nur die Frage ob die Dateien auch wieder direkt für alle freigegeben werden können und dürfen. Evtl müssten die Schreibrechte in diesem Fall für das drive mapping entzogen werden, damit die Dateien dann auch wieder sicher sind…