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!
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);
?>
Thx.