Was bei mir funktioniert ...
bearbeitet von RaketenwilliDas folgende "tut es". Ich teste allerdings in der Konsole:
~~~php
<?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.
Was bei mir funktioniert ...
bearbeitet von RaketenwilliDas folgende "tut es". Ich teste allerdings in der Konsole:
~~~php
<?php
$folder = '0815';
$target_path = "/tmp/test/upload/" . $folder;
$zip_name = $target_path . "/" . $folder . '.zip';
$zip_files = $target_path . "/*";
$sys = "zip $zip_name -0 -j -v $zip_files";
#echo $sys . PHP_EOL; exit;
$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 aus, was wie gezippt wurde.