Фатальна помилка: Клас "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

Відповіді:


207

Для присутності ZipArchiveкласу PHP потрібно встановити розширення zip .

На цій сторінці див. Інструкції щодо встановлення (як для Linux, так і для Windows).


1
можливо я не в змозі зрозуміти, що я роблю. Я використовую приклади, подані на чорнилах, які ви надаєте для вивчення, і завершуйте сценарій. він працює добре на моєму ПК (localhost) і не на сервері. будь ласка, пропозиції щодо цього
Parag Chaure

49
На сервері ubuntu за допомогою apt-getsudo apt-get install php7.0-zip
Люддіг,

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


після apt-get install php7.0-xsl виникла проблема ... не хвилюйтесь просто apt-get install php7.0-zip для вирішення
bortunac

sudo apt-get install php7.1-zipдля Ubuntu / php7.1
Nino Škopac

це не працює 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
Перезапуск апаші зробив це в поєднанні з рішенням @ 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 доступний.


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 configure.

Не достатньо просто встановити правильні розширення на сервер. Перегляньте посилання на інструкції з установки 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 вже не було.


4

Centos 6

yum install php-pecl-zip

service httpd restart

1
Дякую. Я встановив php-pecl-zip, але без перезавантаження httpd. Нарешті знайшов свою відповідь!
Ngoc Nam

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 configure.

Windows

Користувачам Windows необхідно включити php_zip.dll всередині php.ini, щоб використовувати ці функції.


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

1

Для сервера на базі CentOS

yum install php-pecl-zip.x86_64

Увімкніть це, запустивши: echo "extension=zip.so" >> /etc/php.d/zip.ini


0

У мене була та сама проблема, і вона була вирішена за допомогою двох командних рядків:

sudo apt install php-zip

потім перезавантажте веб-сервер для Apache

sudo service apache2 restart



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
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.