Intereting Posts
Использование класса базы данных PDO в других классах PHP Как читать и эхо-размер файла загружаемого файла, написанного на сервере в реальном времени, без блокировки на сервере и на клиенте? Обучение SELECT FROM WHERE подготовленные заявления Преобразование времени и даты из одного часового пояса в другой в PHP Преобразование mysql_query в $ wpdb-> get_results Функция почты PHP не правильно настроена из заголовка Передать относительный путь в абсолютный URL с помощью PHP Как проверить, работает ли указанный PID в настоящий момент, не вызывая ps из PHP? Может ли закодированная строка base64 содержать пробелы? Php для цикла с 2 переменными? Laravel 4 Красноречивый псевдоним столбца Ошибка PHP Simplexml_Load_File Как отобразить валюту в индийском формате нумерации в PHP Пропустить Datetime / Timestamp от PHP до Javascript от echo Отправка файла через форму по электронной почте с помощью Laravel (Localhost)

ZipArchive zip в linux поврежден в окнах

Я использую 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'); 
  1. http://www.jacobbates.com/blog/2012/04/24/corrupt-zip-files-in-windows-from-phps-ziparchive/

  2. 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)) );