Array ( [0] => zip warning: name not matched: /srv/www/htdocs/test/upload/20220822T111343275Z/* [1] => [2] => zip error: Nothing to do! (/srv/www/htdocs/test/upload/chunks/20220822T111343275Z.zip) )
Ja. Klar. Bei Dir ist das '/*' excaped. Das ist aber keine gute Idee, weil zip dann sauer reagiert. Mach das so wie gezeigt ...
$sys = 'zip '
. escapeshellarg( $zip_name )
. ' -0 -j -v '
. escapeshellarg( $zip_files)
. '/*';
und zip
bekommt, was es will. Hier die „Schönschrift“:
<?php
define( 'DEBUG', true );
$subFolder = '0815';
$target_path = '/tmp/test/upload/' . $subFolder;
$zip_name = $subFolder . '.zip';
$zip_files = $target_path;
$sys = 'zip '
. escapeshellarg( $target_path . '/' . $zip_name )
. ' -0 -j -v ' . escapeshellarg( $zip_files)
. '/*';
if ( DEBUG ) echo htmlspecialchars( $sys, ENT_NOQUOTES ) . PHP_EOL;
$result = system( $sys );
if ( DEBUG ) echo 'Ausgaben:'
. PHP_EOL
. htmlspecialchars( $result, ENT_NOQUOTES );
foreach ( new DirectoryIterator( $target_path ) as $fileInfo ) {
if ( DEBUG ) echo 'Vergleiche '
. htmlspecialchars( $fileInfo->getFilename(), ENT_NOQUOTES )
. PHP_EOL;
if (
( ! $fileInfo->isDot() )
AND ( $fileInfo->getFilename() != $zip_name )
) {
if ( DEBUG ) echo htmlspecialchars( $fileInfo->getPathname(), ENT_NOQUOTES )
. ' soll gelöscht werden.'
. PHP_EOL;
if ( ! DEBUG ) unlink( $fileInfo->getPathname() );
}
}