Das folgende "tut es". Ich teste allerdings in der Konsole:
<?php
$folder = '0815';
$target_path = '/tmp/test/upload/' . $folder;
$zip_name = $target_path . '/' . $folder . '.zip';
$zip_files = $target_path;
$sys = 'zip '
. escapeshellarg( $zip_name )
. ' -0 -j -v '
. escapeshellarg( $zip_files)
. '/*';
echo $sys . PHP_EOL;
$fp = popen( $sys, 'r' );
fpassthru( $fp );
#exit;
// Dateien im Folder können jetzt gelöscht werden
foreach ( new DirectoryIterator( $target_path ) as $fileInfo ) {
if (
( ! $fileInfo->isDot() )
AND ( $fileInfo->getFilename() != $folder.".zip" )
) {
echo $fileInfo->getPathname() . ' soll gelöscht werden.' . PHP_EOL;
#unlink( $fileInfo->getPathname() );
}
}
Die Zeile fpassthru( $fp )
gibt nun aus, was wie gezippt wurde und was warum nicht.