Ограничение размера в классе PHP zipArchive? - PullRequest
3 голосов
/ 13 августа 2010

Я создаю zip-файл на PHP для загрузки пользователем.Я не получаю ошибок ни от PHP, ни от проверки функции GetStatusString класса zipArchive.Но если я помещаю некоторые файлы в архив, то, когда я пытаюсь открыть его, я получаю сообщение об ошибке «сжатая (заархивированная) папка неверна или повреждена».Я проверил все файлы, которые я добавляю, все они хороши.Единственное, о чем я могу думать, это то, что большие файлы вызывают проблемы.Но «большой» файл занимает всего около половины мегабайта, и я не могу найти никакой документации об ограничении размера файла для zipArchive.Любые мысли о других вещах, чтобы попробовать, чтобы я мог отследить эту проблему?Спасибо.

Редактировать: Я сократил его до одного конкретного файла, который вызывает проблемы.Есть другие, которые работают как большие или большие, так что я думаю, отбросить эту мысль.Вот примеры имен файлов, которые работают нормально:

627 Jane.CCD.pdf
712 Example_DrNotes.pdf
625 Jane.Labs2.pdf

Да, в некоторых местах есть пробелыимена файлов ... унаследованный код проблемы.Вот имя файла, которое не работает:

623 Jane.Labs.pdf

Не похоже, что это может быть проблема с именем файла.В конечном итоге это произойдет через Интернет, но я проверяю фактический zip-файл, который он создает на сервере, и именно здесь я получаю сообщение об ошибке.

Вот код:

$zip = new ZipArchive();
$zfileName = $GLOBALS["localUploadRoot"] . $zfile;
$requests = $this->getRequests(true);
foreach ($requests AS $r) {
    if (file_exists($GLOBALS["localInboundRequests"] . $r["file"])) {
        $zip->addFile($GLOBALS["localInboundRequests"] . $r["file"], $r["file"]);
    }
}
$zip->close();

Редактировать 2: Извините, я не могу опубликовать файл.В нем есть личная информация.

Ответы [ 3 ]

4 голосов
/ 24 сентября 2010

Ограничение для файлов в Zip-файлах составляет 4 гигабайта (размер несжатого файла), если вы не используете zip64, который пока не поддерживается в php.Смотри http://bugs.php.net/bug.php?id=51353.

3 голосов
/ 21 апреля 2011

лимит zip-файла составляет 4 ГБ (сжатый файл).если размер сжатого файла будет больше 4 ГБ, распаковать его будет невозможно.так что лучший способ разбить ваш zip-файл на 4 ГБ.

0 голосов
/ 28 октября 2014

Из-за естественного ограничения размера файла в 4 ГБ (~ 3,6 ГБ, чтобы быть правильным) для файлов ZIP, этот класс будет генерировать поврежденные файлы с результатом более 4 ГБ. Использование tar.gz - правильная альтернатива.

...