Mr. X: FTP-Problen (2. Anlauf)

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);
?>

  1. 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

    1. 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