Kann ich mit php ein entferntes Verzeichnis 'grabben'?
Wenn ja: wie?
In dem entsprechenden Verzeichnis liegen Bilddateien. Ich möchte den kompletten Inhalt des Verzeichnisses auf meinen Server kopieren.
(Nebenbei bemerkt: ich bin dazu autorisiert. Per Hand ist es mir
zu aufwendig, da es mehrere 100 Bilder sind, die auch noch alle paar
Tage geändert werden).
Danke im Voraus!
Verzeichnis auf anderem Server 'grabben'?
Ich habe einen Ansatz gefunden, den ich noch ausprobieren muss:
Code: Alles auswählen
$externe_datei = "http://fremderserver.de/bild.jpg";
// externe Datei auslesen
$fp=fopen($externe_datei, "r");
$bild = fread($fp, filesize($externe_datei));
fclose($fp);
// Datei erstellen + schreiben
$fp = fopen("bild.jpg", "w");
fwrite($fp, $bild, strlen($bild));
fclose($fp);
/*
Dazu muß aber "fopen wrappers" aktiviert sein.
siehe dazu:
http://de3.php.net/manual/de/function.fopen.php
http://de3.php.net/manual/de/function.readfile.php
*/
-
- Mitglied
- Beiträge: 328
- Registriert: 18.03.2006 23:21
- Kontaktdaten:
Du kannst nicht per PHP-Skript andere Dateien von anderen Servern auslesen. Du kannst zwar per Socket-Funktionen mit dem GET-Befehel eine Datei runterladen, aber du kannst nicht einfach per fopen auf die Files zugreifen. Dann könntest du ja auch die config.php auslesen! 

Modeinbau, Banner- und Grafik-Design - gegen einen kleinen Aufpreis! Mail: sebastian@rayloaded.de oder per PN
Rayloaded.de - Your programmers heaven.
Rayloaded.de - Your programmers heaven.
Ist es nicht. Bevor was vom Server gesendet wird, wird die PHP-Datei in jedem Falle interpretiert. Sprich was du bekommst ist allenfalls ein paar von PHP ausgegebene Daten. Es sei den du stellst deinen Interpreter ab... aber der Fall wäre ja etwas suboptimal.fanrpg hat geschrieben:Mit den falsche CHMOD (777) und nen paar schlechten PHP und Apache Einstellungen ist das ohne Probleme möglichDann könntest du ja auch die config.php auslesen!
Ansich ist aber das grabben eines fremden Verzeichnisses keine Thema, sofern man eine Dateiliste besitzt.
Diese Dateiliste könnte man in ein Array schreiben.
$files = array("http://www.example.org/bild1.jpg","http ... /bild3.jpg"...);
Nun könnte man das array durchlaufen und jede Datei laden.
Dazu können wir sehr wohl fopen(); verwenden.
http://php.net/fopen
foreach($files as $externe_datei)
{
// externe Datei auslesen
$fp=fopen($externe_datei, "r");
$bild = fread($fp, filesize($externe_datei));
fclose($fp);
//Dateiname & Pfad
$path = "./neuerordner/";
$filename = basename($externe_datei);
// Datei erstellen + schreiben
$fp = fopen($path.$filename, "w");
fwrite($fp, $bild, strlen($bild));
fclose($fp);
}
So mit richtigem CHMOD sollte es funktionieren.
Hoff ich

Hier noch einmal der ganze Code:
Code: Alles auswählen
<?php
echo "Directory Grabber by Diezel :P<p>";
$files = array("http://www.example.org/bild1.jpg","http://www.example.org/bild2.jpg","http://www.example.org/bild3.jpg"...);
foreach($files as $externe_datei)
{
echo "Downloading ".$externe_datei."<br>";
// externe Datei auslesen
$fp=fopen($externe_datei, "r");
$bild = fread($fp, filesize($externe_datei));
fclose($fp);
//Dateiname & Pfad
$path = "./neuerordner/";
$filename = basename($externe_datei);
// Datei erstellen + schreiben
$fp = fopen($path.$filename, "w");
fwrite($fp, $bild, strlen($bild));
fclose($fp);
}
echo "Operation finished.";
?>
Wenn ja viel spass

gruß,
DIEZEL