Hallo Klaus1,
popen erzeugt laut Handbuch einen Fork, d.h. einen neuen, parallel laufenden Prozess. Angeblich passiert das nicht unter Windows, da wartet PHP bis das Programm durch ist.
Auf Unix-Systemen sollte der Ablauf parallel sein, und fpassthru sollte warten, bis zip durch ist. DAS solltest Du für Dich beweisen, indem Du ein paar ECHOs einbaust und zip mit -v und nicht mit -q laufen lässt. Das -v sollte Dir auch helfen, die Fehlermeldungen von ZIP besser verstehen zu können.
Du solltest auch ein 2>&1 an die ZIP Befehlszeile hängen, um mögliche Ausgaben auf stderr mitzubekommen. popen liefert Dir nur stdout.
Du solltest weiterhin überprüfen, ob zwei Anwender im gleichen $folder unterwegs sind. Zu diesem Zweck solltest Du Informationen ins Serverlog schreiben (welches Du hoffentlich lesen kannst). Wenn nicht, schreib eine eigene Log-Datei. Dieser create-Error deutet auf Parallelzugriff hin.
Rolf
sumpsi - posui - obstruxi