PHP Zip Создание класса ZipArchive Not Found Error - PullRequest
5 голосов
/ 12 марта 2011

Я пытаюсь создать zip-скрипт на основе того, что нашел здесь , но мне кажется, что я получаю фатальную ошибку: класс "ZipArchive" не найден в новом ZipArchive (); функция.

Изучая это, кажется, что это, как правило, связано с компиляцией PHP. У меня есть общая учетная запись хостинга, поэтому я не настроил ничего из этого ... и я предполагаю, что не могу внести какие-либо изменения в сборку. Из интереса я заглянул в свой phpinfo () и обнаружил некоторые вещи, которые выглядели связанными:

PHP Версия 5.2.6

BZip2 Support   Enabled    <--maybe not so relevant
ZLib Support    enabled
Stream Wrapper support  compress.zlib://
Stream Filter support   zlib.inflate, zlib.deflate
Compiled Version    1.1.4
Linked Version  1.1.4 

Я не уверен до конца, означает ли это, что у меня есть возможность создавать молнии. Для получения дополнительной информации (хотя я не думаю, что она возобновилась), вот мой сценарий до сих пор ... это непроверенный, заметьте, я не могу быть переведен в категорию "Ошибка этого класса не найдена".

$file = tempnam("tmp", "zip");
$zip = new ZipArchive();
$zip->open($file, ZipArchive::OVERWRITE);


   //the string "file1" is the name we're assigning the file in the archive
$zip->addFile('show1.jpg', 'file1.jpg');
$zip->addFile('show2.jpg', 'file2.jpg');
$zip->addFile('show3.jpg', 'file3.jpg');
$zip->addFile('show4.jpg', 'file4.jpg');
$zip->addFile('show5.jpg', 'file5.jpg');
$zip->addFile('show6.jpg', 'file6.jpg');

// echo $zip->file(); //this sends the compressed archive to the output buffer instead of writing it to a file.

$zip->close();
header('Content-Type: application/zip');
header('Content-Length: ' . filesize($file));
header('Content-Disposition: attachment; filename="' . $file.'"');
readfile($file);
unlink($file); 

Итак, мой вопрос (ы):

  1. Я что-то делаю в своем скрипте, чтобы вызвать эту ошибку?
  2. Означает ли что-либо из этого из моего phpinfo (), что я должен иметь возможность создавать zip-файлы, если не то, что мне нужно там искать, что даст мне знать, если у меня есть такая возможность.
  3. Похоже, что ZLib - это некая библиотека, но я понятия не имею, делает ли она то, что хочу, или даже как ее использовать ... это немного догадка, но если это может помочь мне создать zip-файлы. Может ли кто-нибудь указать мне правильное направление использования?

Заранее спасибо. Dan

Ответы [ 4 ]

3 голосов
/ 12 марта 2011

ZipArchive, по-видимому, не компилируется в PHP по умолчанию. Вам необходимо либо перекомпилировать его с параметром --with-zip =, либо просто установить его через PECL.

Вот страница руководства, объясняющая различные методы:

http://www.php.net/manual/en/zip.installation.php

1 голос
/ 12 марта 2011

Несмотря на то, что zlib является важной библиотекой сжатия, похоже, вам не хватает самого расширения zip . Похоже, вы получили информацию от phpinfo - ищите точные слова «расширение zip». Если вы не можете их найти, у вас не установлено и, следовательно, вы не можете использовать предоставляемые им функции и методы.

0 голосов
/ 05 октября 2016

Если у вас есть обновленная версия php или расширение zip отсутствует

Поэтому вам необходимо установить его.

1) Открыть терминал

2) sudo apt-get установить php7.0-zip

3) sudo service apache2 restart

0 голосов
/ 12 марта 2011

Вы можете попробовать dl("zip.so"); в крайнем случае.Но это расширение редко строится как внешний модуль.Вы можете найти его где-нибудь для скачивания или даже скомпилировать вручную из источников PHP или http://pecl.php.net/package/zip, используя pecl build

В противном случае вам придется искать альтернативу.http://pear.php.net/package/Archive_Zip приходит на ум.

...