Raketenwilli: Ups. Gefährlich!

Beitrag lesen

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() );
		}
	}