Фатальная ошибка: класс 'ZipArchive' не найден в

у меня проблема, что я устанавливаю "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 файл в папку, где находится скрипт, но он не действовать.

11 ответов


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

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


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

sudo apt-get install php7.0-zip


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

sudo apt-get install php5.6-zip

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

sudo service apache2 restart

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


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

sudo apt-get install php-zip
sudo phpenmod zip
sudo service apache2 restart

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

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

вы должны видеть, как изображение. enter image description here

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

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


он работал

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


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

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

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


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

системы Linux

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

Windows

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


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

войдите в WHM.

на EasyApache 4 (или любая версия у) под программа tab.

В Разделе Установленные Пакеты нажмите кнопку Настройки.

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

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

регистрация всех из них,

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

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


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

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

yum search zip |grep -i php

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

yum install your_zip_package_name_with_php_version

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

yum install php-pecl-zip.x86_64

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

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


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

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