Kann mir jemand einen Hinweis geben, was falsch ist? Ich habe ein Skript, das im Handumdrehen eine ZIP-Datei generiert und diese dann mit X-Sendfile und Lighttpd zum Download bereitstellt. Alles scheint zu funktionieren, aber meine heruntergeladene Datei ist ein paar Bytes weniger im Vergleich zu der ZIP-Datei, die auf dem Server erstellt wurde, und natürlich, weil es der Header der Datei ist, die fehlt, führt es zu einer zerbrochenen Zip-Datei. Hier ist der relevante Teil meines Skripts:Lighttpd X-Sendfile beschädigte Dateien
<?php
header("Content-Disposition: attachment; filename=\"$MYVARIABLE1" . ".zip\"");
if ($status == 1) {
$tmp_file = tempnam('/tmp/', '');
$dir = new RecursiveDirectoryIterator("/mnt/BLABLABLA/$MYVAR2/$MYVAR3/", FilesystemIterator::SKIP_DOTS);
$it = new RecursiveIteratorIterator($dir, RecursiveIteratorIterator::SELF_FIRST);
$it->setMaxDepth(1);
$mylist = "";
foreach ($result as $row) {
$files = new RegexIterator($it, "/" . $row[2] . "/", RegexIterator::GET_MATCH);
$mylist.="\"" . key(iterator_to_array($files)) . "\" ";
}
exec("/usr/bin/zip -qj0 $tmp_file $mylist");
header("X-LIGHTTPD-send-file: $tmp_file" . ".zip");
exit();
}
?>
Der Reißverschluss auf dem Server tmp-Ordner ist in Ordnung, aber der heruntergeladene Inhalt beschädigt ist.