Non reinventare la ruota:
https://packagist.org/packages/alchemy/zippy
codice:// Creates an archive.zip that contains a directory "folder" that contains// files contained in "/path/to/directory" recursively $archive = $zippy->create('archive.zip', array( 'folder' => '/path/to/directory' ), true);