2011-01-10 3 views
1

Я в процессе написания некоторых функций создания epub, используя php5. В настоящее время я пытаюсь использовать ZipArchive, но с ним сталкиваются пара раздражений. Прежде всего, нет необходимости устанавливать уровень сжатия. Во-вторых, ZipArchive::addFile(), кажется, терпит неудачу и создает поврежденный архив всякий раз, когда я его использую. Я использовал file_get_contents() + ZipArchive::addFromString(), но предпочел бы просто использовать документацию для добавления файлов.Библиотеки, отличные от ZipArchive, для создания архивов pkzip в PHP?

Я не буду публиковать образцы кода, если кто-то действительно не захочет помочь мне отладить эту проблему, но мне интересно, существуют ли какие-либо другие библиотеки для создания архивов zip (pkzip) на PHP, которые вы бы порекомендовали. До сих пор я видел PclZip, сайт которого, похоже, не загружается, но не намного больше. Я также рассмотрел использование exec() + zip (команда unix). Этот код будет работать только в этом конкретном поле Linux, поэтому переносимость не является проблемой.

Заранее благодарим за любые предложения!

+0

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

ответ

1

PCLZip - довольно хорошая альтернатива, с zlib как единственной зависимостью, если вы можете получить доступ к сайту. Это, вероятно, временный, он, конечно, был доступен между Рождеством и Новым годом.

Это также довольно эффективно, даже по сравнению с ZipArchive

EDIT

Вы говорите, что у вас были проблемы с() метод AddFile ZipArchive в. Это в среде Windows или на вашем Linux-сервере? Я знаю, что было несколько ошибок в библиотеке php_zip на Win32, которые могут дать эту проблему, хотя последние версии выглядят нормально, и я не сталкивался с той же проблемой на других платформах (даже в версии WIN64).

+0

У меня проблемы с этим на сервере linux dev. Фактический вызов addFile возвращает true, но добавляется файл размера 0, в результате чего архив нечитабелен. Существует один комментарий к php.net (http://www.php.net/manual/en/function.ziparchive-addfile.php#84529), в котором говорится о том, чтобы использовать относительный путь к файлу на сервере, иначе это вызовет ошибка. Я использую абсолютный путь, поэтому я рассматриваю это как последнее средство. – nini

+0

Вы посмотрели ответы на этот вопрос? http://stackoverflow.com/questions/4651276/php-no-error-when-creating-zip-but-it-doesnt-get-created –

+0

А, я вижу, я думаю, что это моя проблема с addFile. Спасибо за ссылку. Было бы здорово, если бы addFile действительно запустил правильную ошибку при попытке добавить, но что вы можете сделать. Однако у меня все еще возникают проблемы с моим файлом epub, потому что один файл в архиве должен иметь сжатие 0, и я не могу установить его с помощью ZipArchive. Эпб не будет корректно открываться в считывателе без правильного архивирования этого файла, поэтому, насколько я могу судить, мне придется использовать что-то другое, кроме ZipArchive, чтобы это сделать. – nini

1

Я использовал бы exec() и команду Unix. Способ решения проблемы с помощью «самой старой» системы - unix utils всегда будет на шаг или два впереди от своих PEAR-аналогов.

Смежные вопросы