Неустранимая ошибка: класс 'ZipArchive' не найден в

76

У меня проблема с установкой "Archive_Zip 0.1.1" на Linux-сервере, но когда я пытаюсь запустить script для создания zip файла, он дает фатальную ошибку " Неустранимая ошибка: класс" ZipArchive "не найден в ---" где я поставил код

$zip = new ZipArchive;
var_dump($zip);
$res = $zip->open($filename, ZipArchive::OVERWRITE);
if($res !== TRUE){
    echo 'Error: Unable to create zip file';
    exit;
}
if(is_file($src)){
    $zip->addFile($src);
}else{
    //echo "<br>".dirname(__FILE__).$src;//'/install1';
    if(!is_dir($src)){
         $zip->close();
         @unlink($filename);
         echo 'Error: File not found';
         exit;
    }
    recurse_zip($src,$zip,$path_length);
}
$zip->close();
echo "<br>file name ".$filename;

но он не нашел файл класса.

Скажите, пожалуйста, решение, что я должен сделать, чтобы решить проблему. Я также поместил файл php.ini в папку, где script есть, но он не работает.

Теги:
zip
ziparchive

9 ответов

96
Лучший ответ

Для ZipArchive class, который должен присутствовать, PHP должен иметь расширение zip.

См. эту страницу для инструкций по установке (как для Linux, так и для Windows).

  • 0
    Я установил расширения Archive_Tar и File_Archive на сервере
  • 0
    @parag тогда это не правильные расширения, не так ли? Рассматриваемый здесь, кажется, назван "почтовым индексом"
Показать ещё 13 комментариев
54

На Amazon ec2 с Ubuntu + nginx + php7 у меня были те же проблемы, которые были решены с помощью:

sudo apt-get install php7.0-zip

  • 0
    после apt-get install php7.0-xsl возникла проблема ... не беспокойтесь, просто apt-get install php7.0-zip для решения
  • 0
    sudo apt-get install php7.1-zip для Ubuntu / php7.1
21

На рабочем столе ubuntu мне пришлось делать.

sudo apt-get install php5.6-zip

Это установило библиотеку, но я все еще продолжал получать ту же ошибку, поэтому мне пришлось перезапустить apache, используя:

sudo service apache2 restart

и это сработало.

  • 0
    Перезапуск apache сделал это, в сочетании с решением @pekka's pekka
5

Я не вижу этого здесь, поэтому я хотел бы добавить, что в Debian/Ubuntu вам может понадобиться включить расширение после установки относительного пакета. Итак:

sudo apt-get install php-zip
sudo phpenmod zip
sudo service apache2 restart
  • 0
    Установите php7.0-zip для PHP 7.
  • 0
    НЕ ЗАБУДЬТЕ ПЕРЕЗАГРУЗИТЬ АПАХУ !!
3

Это сработало

apt-get install php7.0-zip

и не нужно перезапускать php7.0-fpm вручную.

Unpacking php7.0-zip (7.0.16-4+deb.sury.org~trusty+1) ...
Processing triggers for php7.0-fpm (7.0.11-1+deb.sury.org~trusty+1) ...
php7.0-fpm stop/waiting
php7.0-fpm start/running, process 1572
php7.0-fpm stop/waiting
php7.0-fpm start/running, process 1777
Setting up php7.0-zip (7.0.16-4+deb.sury.org~trusty+1) ...
locale: Cannot set LC_ALL to default locale: No such file or directory

Creating config file /etc/php/7.0/mods-available/zip.ini with new version
Processing triggers for php7.0-fpm (7.0.11-1+deb.sury.org~trusty+1) ...
php7.0-fpm stop/waiting
php7.0-fpm start/running, process 2354
php7.0-fpm stop/waiting
php7.0-fpm start/running, process 2397
3

PHP 5.2.0 и более поздние версии

Системы Linux

Чтобы использовать эти функции, вы должны скомпилировать PHP с поддержкой zip с помощью опции -enable-zip configure.

Окна

Пользователям Windows необходимо включить php_zip.dll внутри php.ini, чтобы использовать эти функции.

3

Вам также нужно скомпилировать PHP с поддержкой zip. В руководстве написано следующее:

Чтобы использовать эти функции, вы должны скомпилировать PHP с поддержкой zip, используя опцию --enable-zip configure.

Недостаточно просто установить правильные расширения на сервере. Взгляните на ссылку по установке Pekka, опубликованную ранее. Мой ответ - это просто разъяснение его.

  • 0
    да, но где я должен запускать эти команды на сервере, чтобы php работал с поддержкой zip
  • 0
    Это сервер, который вы контролируете? Если так, то я считаю, что это часть команды make при установке PHP. Если вы контролируете не сервер, то единственный вариант для вас - попытаться сделать так, чтобы администратор системы сделал это. Извините, я не могу быть более точным - я никогда не устанавливал PHP на сервер Linux с нуля.
2

Прежде всего, решение для удаленного сервера:

Если вы используете cpanel, у вас может быть расширение zip, но не активировано. Вам нужно активировать его. Для этого случая вам нужно перейти в раздел cpanel > внутри раздела программного обеспечения > нажмите на версию PHP. Затем найдите zip и проверьте его. Теперь сохраните.

Вы должны увидеть как изображение. Изображение 106419

Обновить страницу. Ошибка должна исчезнуть.

Примечание. Если вы не нашли, обратитесь к поставщику услуг. Они будут установлены для вас.

  • 0
    Это сработало для меня. Я использовал конструктор шаблонов, и он не будет экспортировать. Я установил флажок zip, сохранил и вуаля. Спасибо Кейлан
-9

1) Вы должны require ваш файл с файлом ZipArchive.

require 'path/to/file/ZipArchive.php';

2) Или используйте метод __autoload класса. В PHP 5 это приветливый метод __autoload().

function __autoload($class_name) {
    require_once $class_name . '.php';
}

$obj  = new MyClass1(); // creating an object without require.

http://www.php.net/manual/en/language.oop5.autoload.php

  • 0
    Как мне включить или потребовать файл ZipArchive?
  • 0
    Смотрите мои изменения.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню