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

181

У меня проблема с тем, что я устанавливаю «Archive_Zip 0.1.1» на сервере Linux, но когда я пытаюсь запустить скрипт для создания 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файл в папку, где находится скрипт, но он не работает.

Параг Чауре
источник
7
Об использовании Ubuntusudo apt-get install php7.2-zip
Эрик Королев
1
@EricKorolev, которые дают E: Unable to locate package php7.2-zip E: Couldn't find any package by regex 'php7.2-zip'с помощью Ubuntu 14.04 с PHP 7,2
Мухаммед Омер Аслам
1
На Debian 10 это просто apt-get install php-zip.
aexl
Вы можете просмотреть это сообщение: stackoverflow.com/a/60482998/4806585
VishalParkash

Ответы:

208

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

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

Пекка
источник
1
возможно, я не могу понять, что я делаю. Я использую примеры, которые приведены на чернилах, которые вы предоставляете, для изучения и завершения сценария. он отлично работает на моем компьютере (локальный) и не на сервере. пожалуйста предложения для этого
Parag Chaure
49
На сервере Ubuntu, используя apt-getsudo apt-get install php7.0-zip
Luddig
9
Простое решение: sudo apt-get install php7.0-zip. Затем отредактируйте файл /etc/php/7.0/cli/php.ini(в разделе «Динамические расширения» добавьте строку extension=zip.so). Это должно решить это
JonyD
21
Для docker-php-ext-install zip
Докера
11
Как уже упоминалось @Luddig на сервере Ubuntu после sudo apt-get install php7.0-zipтого, как вам нужно будет перезапустить сервер Apachesudo systemctl restart apache2
hashmi
82

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

sudo apt-get install php7.0-zip

star18bit
источник
после apt-get install php7.0-xsl возникла проблема ... не волнуйтесь, просто apt-get install php7.0-zip решите
bortunac
sudo apt-get install php7.1-zipдля Ubuntu / php7.1
Нино Шкопац
это не работает php 7.2и всегда говоритE: Unable to locate package php7.2-zip E: Couldn't find any package by regex 'php7.2-zip'
Мухаммед Омер Аслам
39

На рабочем столе Ubuntu я должен был сделать.

sudo apt-get install php5.6-zip

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

sudo service apache2 restart

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

Мубашар Аббас
источник
1
Перезапускаемый Apache сделал это, когда объединился с решением @ pekka
gthuo
18

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

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

Вы должны увидеть как изображение. введите описание изображения здесь

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

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

Калян Халдер Рааз
источник
Это сработало для меня. Я использовал конструктор шаблонов, и он не будет экспортировать. Я установил флажок zip, сохранил и вуаля. Спасибо, Кейлан
Хблегг,
16

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

sudo apt-get install php-zip
sudo phpenmod zip
sudo service apache2 restart
Лоренсо-ы
источник
2
Установить php7.0-zipдля PHP 7.
AnthonyB
НЕ ЗАБУДЬТЕ ПЕРЕЗАГРУЗИТЬ АПАХУ !!
zzapper
1
Установите php7.1-zip для PHP 7.1, php7.2-zip для PHP 7.2.
Нео
6

Если у вас есть доступ к WHM, это проще.

Войдите в WHM .

Перейдите в EasyApache 4 (или любую другую версию) на вкладке « Программное обеспечение ».

В разделе «Установленные пакеты» нажмите «Настроить» .

Перейти к расширениям PHP , в поиске типа " zip " ( без кавычек ),

вы должны увидеть 3 модуля

проверь их всех,

нажмите синюю кнопку несколько раз, чтобы завершить процесс.

Это сработало для меня. К счастью, у меня есть WHM.

Temo
источник
5

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

apt-get install php7.0-zip

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

Распаковка php7.0-zip( 7.0.16-4+deb.sury.org~trusty+1) ...
Обработка триггеров для php7.0-fpm( 7.0.11-1+deb.sury.org~trusty+1) ...
php7.0-fpmостановка / ожидание
php7.0-fpmзапуска / запуска, процесс 1572
php7.0-fpmостановка / ожидание
php7.0-fpmзапуска / запуска, процесс 1777
Настройка php7.0-zip( 7.0.16-4+deb.sury.org~trusty+1) ...
локаль: невозможно установить LC_ALLпо умолчанию локаль: такого файла нет или каталог

Создание файла конфигурации /etc/php/7.0/mods-available/zip.iniс новой версией
Обработка триггеров для php7.0-fpm( 7.0.11-1+deb.sury.org~trusty+1) ...
php7.0-fpmостановка / ожидание
php7.0-fpmзапуска / работы, процесс 2354
php7.0-fpmостановка / ожидание
php7.0-fpmзапуска / работы, процесс 2397

прости
источник
4

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

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

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

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

У меня была такая же проблема с установленным сервером CentOS и cPanel . Я установил пакет zipArchive через cPanel и не работал должным образом. После попыток с таким количеством исправлений, предложенных каждый раз, мне помогло только следующее.

Сначала найдите имя для правильного пакета с помощью команды ниже

yum search zip |grep -i php

Затем используйте приведенный ниже код.

yum install your_zip_package_name_with_php_version

В моем случае правильный код для установки zipArchive был

yum install php-pecl-zip.x86_64

У меня было решение по этой ссылке. Как я могу установить zipArchive на PHP 7.2 с CentOS 7?

И эта установка как-то включила и этот пакет, а также перезапустила работающие сервисы, и после завершения выполнения вышеуказанного кода проблема zipArchive исчезла.

antonD
источник
4

Centos 6

yum install php-pecl-zip

service httpd restart
zzapper
источник
1
Спасибо. Я установил php-pecl-zip, но без перезапуска httpd. Наконец-то нашел свой ответ!
Нгок Нам
4

Для PHP 7.x

sudo apt-get install php-zip

Для PHP 5.x

sudo apt-get install php5.x-zip
// (for example sudo apt-get install php5.6-zip)

А затем перезапустите сервер Apache

sudo service apache2 restart
Санто Болдижар
источник
3

PHP 5.2.0 и выше

Linux системы

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

Windows

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

Vineesh Kalarickal
источник
3

Я столкнулся с этой проблемой на GCP при развертывании WordPress в среде App Engine Standard. Это решило это:

sudo apt-get install php7.2-zip
Омар Шабаб
источник
1

Для Centos 7 и PHP 7.3 на Remi

Поиск расширения zip:

$ yum search php73 | grep zip
php73-php-pecl-zip.x86_64 : A ZIP archive management extension

Имя расширения: php73-php-pecl-zip.x86_64 . Чтобы установить его на сервер под управлением одной версии PHP, удалите префикс php73:

$ sudo yum --enablerepo=remi-php73 install php-pecl-zip #for server running single PHP7.3 version
$ #sudo yum --enablerepo=remi-php73 install php73-php-pecl-zip # for server running multiple PHP versions

Перезапустите PHP:

$ sudo systemctl restart php-fpm

Проверьте установленные расширения PHP:

$ php -m
[PHP Modules]
apcu
bcmath
bz2
...
zip
zlib
kiatng
источник
1

Для использования на сервере CentOS

yum install php-pecl-zip.x86_64

Включите его, запустив: echo "extension=zip.so" >> /etc/php.d/zip.ini

Wolfack
источник
0

У меня была та же проблема, и она была решена с помощью двух командных строк:

sudo apt install php-zip

затем перезагрузите ваш веб-сервер для Apache

sudo service apache2 restart

AboElnouR
источник
0

Попробуй написать \ZIPARCHIVEвместо ZIPARCHIVE.

URL87
источник
0

Вам нужно проверить версию PHP

Если версия php 5.6, вам нужно установить php5.7-zip

sudo apt-get install php5.6-zip

а потом

sudo service apache2 restart

Надеюсь, поможет

Сундар
источник
-13

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

Алекс Плюутау
источник
Как мне включить или потребовать файл ZipArchive?
Parag Chaure