Hm.
Das zeigt leider nicht, ob der Upload noch stattfindet, während auf dem Server schon gezippt wird. Und die gezeigte Warnung
zip warning: file size changed while zipping
lässt genau das vermuten.
Es ist also sehr wahrscheinlich so, dass der Upload noch stattfindet, während gezippt werden soll.
Lösung:
- Initiere den Request für das Zippen erst, wenn die Uploads der Filechunks komplett „durch“ sind. (browserseitig, im JavaScript)
- Achte also auch darauf, dass der auf dem Server laufende Prozess (wohl ein anderes PHP-Skript!), der die Filechunks zur Datei zusammenfügt (auch das kann etwas dauern), sein „ok“ erst sendet, wenn wirklich alle Befehle darin abgeschlossen sind - insbesondere das Zusammenfügen der Datei wirklich vollständig stattgefunden hat.
$folder = $_POST["folder"];
Ich hab jetzt nicht gesehen, dass wirklich etwas passieren kann - aber:
Was passiert, wenn jemand
../../../../../etc
sendet? Dann hast Du
$target_path = "/srv/www/htdocs/test/upload/../../../../../etc"
oder eben:
$target_path = "/etc"
Alarm!
Lege sowas auf dem Server fest und/oder schreibe es in eine Session. Nicht per POST oder GET vom Browser nehmen! NeverEver!
Das geht zwar hier aus einem anderen Grund schief (weil dann das zip-File nicht geschrieben werden kann) aber das Eis ist zu dünn.