FTP-Problen (2. Anlauf)
Mr. X
- php
OK. Noch ein versuch:
Also ich hab ein Problem.
Ich hab eine Routine geshrieben, die rekursiv alle Dateien eines FTP-Servers ausgibt. lokal (mit WarFTP Deamon 1.6.5) grht's wunderbar. Wenn ich es aber mit ftp.cpan.de ausprobiere, geht's nich!
Es gibt keine Fehlermeldung, manchmal gibt er nur die Verzeichnisse aus:
: /pub//pub/mysql
1: /pub//pub/linux
2: /pub//pub/apache
3: /pub//pub/perl
4: /pub//pub/network
5: /pub//pub/CPAN
und manchmal sagt er Zeitüberschreitung...
aufruf: filelist.php?host=ftp.cpan.de&name=anonymous&key=x@y.de&passive=0
Hier der Code:
<?PHP
$Query = explode("&", getenv("QUERY_STRING"));
for($i=0; $i < count($Query); $i++)
{
$Name = substr($Query[$i], 0, strpos($Query[$i], "="));
$Wert = substr($Query[$i], strpos($Query[$i], "=") + 1);
$Params[strtolower(urldecode($Name))] = strtolower(urldecode($Wert));
}
unset($Query);
unset($Name);
unset($Wert);
$FTPStream = ftp_connect($Params["host"]);
ftp_login($FTPStream, $Params["name"], $Params["key"]);
ftp_pasv($FTPStream, intval($Params["passive"]));
header("Content-Type: text/plain");
echo "// Automaticaly generated from FileList.php at " . date("l dS F Y H:i:s") . "\n";
GetFiles("", $FTPStream);
global $filenum;
$filenum = 0;
function GetFiles($CurDir, $FTPStream) {
$CurFiles = ftp_nlist($FTPStream, $CurDir);
for($i = 0; $i < count($CurFiles); $i++) {
if(ftp_isDir($FTPStream, $CurDir . "/" . $CurFiles[$i]) == true) {
GetFiles($CurDir . "/" . $CurFiles[$i], $FTPStream);
}
else {
global $filenum;
echo $filenum . ": ". $CurDir . "/" . $CurFiles[$i] . "\n"
$filenum = $filenum + 1;
}
}
}
function ftp_isDir($FTPStream, $Dir) {
$oldErrors = error_reporting();
$oldPath = ftp_pwd($FTPStream);
error_reporting(0);
$ret = ftp_chdir($FTPStream, $Dir);
return $ret;
ftp_chdir($oldPath);
error_reporting($oldErrors);
}
ftp_quit($FTPStream);
?>
Hi!
Ich glaub ich hab da was: Kann es sein, dass manche FTP-Server bei ftp_nlist absolute Pfade, und manche nur die Namen der Verzeichnisse zurückgeben?
Mr. X
Hi!
Also -- das geht jetzt halbwegs -- Aber jetzt ab ich ein anderes wirklich unerklärliches Problem: Wenn ich das Script mit dem Lycos ftp-Server aufrufe, findet er manchmal 13 Dateien, manchmal 12, machchmal 23... In wirklichkeit sollten es über 80 sein!!! Das Script findet ihr unter http://mitglied.lycos.de/peterk/anderes/Filelist.txt. Ich hoffe dass ihr mir helfen könnt... Denn eigentlich kann das ja nicht sein, dass das unterschiedlich viele Dateien sind! Es hat sich ja nix geändert.
Thx. Mr. X