Я использую ziparchive для zip-файлов в Linux и не могу открыть в zip-загрузчике по умолчанию по умолчанию, я подозреваю, что это вызвано файловым путем во время добавления файла, например
$zip-addFile('/home/userName/public_html/gallery/license.txt', 'gallery/license.txt'); Предложение по ссылкам ниже упоминает, что я удаляю локальный путь (поскольку это не может быть понято окнами), который становится
 $zip-addFile('/home/userName/public_html/gallery/license.txt', 'license.txt'); 
http://www.jacobbates.com/blog/2012/04/24/corrupt-zip-files-in-windows-from-phps-ziparchive/
PHP ZipArchive поврежден в Windows
Но мне нужно поддерживать структуру каталогов, как мне решить эту проблему?
  возможно, сначала добавьте целевой каталог с помощью addEmptyDir см. ниже код, создайте разные файлы: 
 <?php error_reporting(E_ALL); ini_set('display_errors','on'); $zip = new ZipArchive; if ($zip->open('tmp/test.zip',ZipArchive::CREATE) === TRUE) { $zip->addFile('data.php', 'data/data.php'); $zip->close(); echo 'ok'; } else { echo 'failed'; } $zip = new ZipArchive; if ($zip->open('tmp/testdata.zip',ZipArchive::CREATE) === TRUE) { if($zip->addEmptyDir('data')) { echo 'Created a new root directory'; } else { echo 'Could not create the directory'; } $zip->addFile('data.php', 'data/data.php'); $zip->close(); echo 'ok'; } else { echo 'failed'; } 
Файлы имеют разные размеры файлов:
 -rw-r--r-- 1 www-data www-data 633 Apr 29 12:10 testdata.zip -rw-r--r-- 1 www-data www-data 545 Apr 29 12:10 test.zip 
unzip test.zip no empty dir добавлено:
 unzip test.zip Archive: test.zip inflating: data/data.php 
unzip testdata.zip с пустым добавлением:
 Archive: testdata.zip creating: data/ inflating: data/data.php 
делает создание: data / first
  Имела та же проблема со структурой, подобной вашей, в контексте Drupal.  Я решил это, установив имя файла Content-disposition с моим uri 
 file_transfer($archive_uri, array( 'Content-Disposition' => 'attachment; filename="' . $archive_uri . '"', 'Content-Length' => filesize($archive_uri)) );