Błąd krytyczny: nie znaleziono klasy „ZipArchive” w


181

Mam problem, że instaluję 'Archive_Zip 0.1.1' na serwerze Linux, ale kiedy próbuję uruchomić skrypt w celu utworzenia pliku zip, pojawia się błąd krytyczny

Błąd krytyczny: ZipArchivenie znaleziono klasy w ...

gdzie umieściłem kod

$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;

ale nie znajduje pliku klasy.

Proszę, powiedz mi rozwiązanie. Co mam zrobić, aby rozwiązać problem? Włożyłem również php.iniplik do folderu, w którym znajduje się skrypt, ale nie działa.


7
Na Ubuntusudo apt-get install php7.2-zip
Eric Korolev

1
@EricKorolev, który daje E: Unable to locate package php7.2-zip E: Couldn't find any package by regex 'php7.2-zip'używanie Ubuntu 14.04 z php 7.2
Muhammad Omer Aslam

1
W Debianie 10 jest po prostu apt-get install php-zip.
aexl

Odpowiedzi:


207

Aby ZipArchiveklasa była obecna, PHP musi mieć zainstalowane rozszerzenie zip .

Zobacz tę stronę, aby uzyskać instrukcje dotyczące instalacji (zarówno w systemie Linux, jak i Windows).


1
prawdopodobnie nie jestem w stanie zrozumieć tego, co robię. Korzystam z przykładów podanych na atramentach, które podajesz, do przestudiowania i dokończenia scenariusza. działa dobrze na moim komputerze (localhost), a nie na serwerze. proszę o sugestie
Parag Chaure

49
Na serwerze ubuntu przy użyciu apt-getsudo apt-get install php7.0-zip
Luddig

9
Proste rozwiązanie: sudo apt-get install php7.0-zip. Następnie edytuj plik /etc/php/7.0/cli/php.ini(w sekcji „Rozszerzenia dynamiczne” dodaj wiersz extension=zip.so). To powinno rozwiązać problem
JonyD,

21
Dockerdocker-php-ext-install zip
David Riccitelli

11
Jak wspomniał @Luddig na serwerze ubuntu po sudo apt-get install php7.0-zipponownym uruchomieniu serwera Apachesudo systemctl restart apache2
hashmi

82

Na Amazon ec2 z Ubuntu + nginx + php7 miałem te same problemy, rozwiązałem je za pomocą:

sudo apt-get install php7.0-zip


po instalacji apt-get php7.0-xsl pojawił się problem ... nie martw się, po prostu apt-get zainstaluj php7.0-zip, aby rozwiązać
bortunac

sudo apt-get install php7.1-zipdla Ubuntu / php7.1
Nino Škopac

to nie działa php 7.2i zawsze mówiE: Unable to locate package php7.2-zip E: Couldn't find any package by regex 'php7.2-zip'
Muhammad Omer Aslam

39

Na pulpicie Ubuntu musiałem to zrobić.

sudo apt-get install php5.6-zip

Zainstalowało to bibliotekę, ale nadal otrzymywałem ten sam błąd, więc musiałem ponownie uruchomić Apache za pomocą:

sudo service apache2 restart

i zadziałało.


1
Restartujący apache zrobił to w połączeniu z rozwiązaniem @
pekka

18

Przede wszystkim rozwiązanie dla zdalnego serwera:

Jeśli używasz cpanel , być może masz zainstalowane rozszerzenie zip, ale nie możesz go aktywować. Musisz go aktywować. W tym przypadku musisz przejść do cpanel> wewnątrz sekcji oprogramowania> kliknąć wersję PHP . Następnie znajdź zip i sprawdź. Teraz oszczędzaj.

Powinieneś zobaczyć jak na obrazku. wprowadź opis obrazu tutaj

Odśwież stronę. Błąd powinien zniknąć.

Uwaga: Jeśli nie możesz znaleźć, skontaktuj się z dostawcą serwera. Zainstalują dla ciebie.


To zadziałało dla mnie. Używałem narzędzia do tworzenia szablonów i nie można było go eksportować. Sprawdziłem pole wyboru zip, zapisałem i voila. Dziękuję Kaylan
Hblegg

16

Nie widzę tego tutaj, więc chciałbym dodać, że w Debianie / Ubuntu może być konieczne włączenie rozszerzenia po zainstalowaniu odpowiedniego pakietu. Więc:

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

2
Zainstaluj php7.0-zipdla PHP 7.
AnthonyB

NIE ZAPOMNIJ O RESTARTU APACHE !!
zzapper

1
Zainstaluj php7.1-zip dla PHP 7.1, php7.2-zip dla PHP 7.2.
Neo

6

Jeśli masz dostęp do WHM, jest to łatwiejsze.

Zaloguj się do WHM .

Przejdź do EasyApache 4 (lub dowolnej posiadanej wersji) w zakładce Oprogramowanie .

W sekcji Aktualnie zainstalowane pakiety kliknij Dostosuj .

Idź do PHP Extensions , w wyszukiwarce wpisz " zip " ( bez cudzysłowów ),

powinieneś zobaczyć 3 moduły

sprawdź je wszystkie,

kliknij niebieski przycisk kilka razy, aby zakończyć proces.

To zadziałało dla mnie. Na szczęście mam dostępne WHM.


5

To zadziałało

apt-get install php7.0-zip

i nie ma potrzeby ponownego php7.0-fpmręcznego uruchamiania .

Rozpakowywanie php7.0-zip( 7.0.16-4+deb.sury.org~trusty+1) ...
Przetwarzanie wyzwalaczy dla php7.0-fpm( 7.0.11-1+deb.sury.org~trusty+1) ...
php7.0-fpmzatrzymanie / oczekiwanie
php7.0-fpmuruchomienie / uruchomienie, proces 1572
php7.0-fpmzatrzymanie / oczekiwanie
php7.0-fpmrozpoczęcie / uruchomienie, proces 1777
Ustawianie php7.0-zip( 7.0.16-4+deb.sury.org~trusty+1) ...
locale: Nie można ustawić LC_ALLdomyślnych ustawień regionalnych: brak takiego pliku lub katalog

Tworzenie pliku konfiguracyjnego /etc/php/7.0/mods-available/zip.iniz nową wersją
Przetwarzanie wyzwalaczy dla php7.0-fpm( 7.0.11-1+deb.sury.org~trusty+1) ...
php7.0-fpmstop / oczekiwanie na
php7.0-fpmuruchomienie / uruchomienie, proces 2354
php7.0-fpmzatrzymanie / oczekiwanie na
php7.0-fpmuruchomienie / uruchomienie, proces 2397


4

Musisz także skompilować PHP z obsługą zip. Instrukcja mówi, co następuje:

Aby móc korzystać z tych funkcji, należy skompilować PHP z obsługą zip przy użyciu opcji konfiguracji --enable-zip.

Nie wystarczy po prostu zainstalować poprawne rozszerzenia na serwerze. Spójrz na link do instrukcji instalacji, który Pekka zamieścił wcześniej. Moja odpowiedź jest tylko jego wyjaśnieniem.


tak, ale gdzie powinienem uruchomić te polecenia na serwerze, aby php
działał

Czy to serwer, który kontrolujesz? Jeśli tak, to uważam, że jest to część polecenia make podczas instalowania PHP. Jeśli nie jest to serwer, który kontrolujesz, jedyną opcją dla Ciebie jest poproszenie administratora sys o zrobienie tego. Przepraszam, nie mogę być bardziej precyzyjny - nigdy nie instalowałem PHP na serwerze Linux od zera.
Jeremy

4

Miałem ten sam problem z CentOS i cPanel zainstalowanym serwerem . Zainstalowałem pakiet zipArchive przez cPanel i nie działałem zgodnie z oczekiwaniami. Po wypróbowaniu tak wielu poprawek, które zasugerowałem, tylko poniższe działały dla mnie.

Najpierw znajdź nazwę odpowiedniego pakietu za pomocą poniższego polecenia

yum search zip |grep -i php

Następnie użyj poniższego kodu.

yum install your_zip_package_name_with_php_version

W moim przypadku poprawny kod do zainstalowania zipArchive to

yum install php-pecl-zip.x86_64

Miałem rozwiązanie z tego linku. Jak mogę wstawić zipArchive w PHP 7.2 z CentOS 7?

I ta instalacja w jakiś sposób włączyła również ten pakiet, a także zrestartowała działające usługi i po zakończeniu wykonywania powyższego kodu problem zipArchive zniknął.


4

Centos 6

yum install php-pecl-zip

service httpd restart

1
Dziękuję Ci. Zainstalowałem php-pecl-zip, ale bez ponownego uruchamiania httpd. Wreszcie znalazłem odpowiedź!
Ngoc Nam

4

W przypadku PHP 7.x

sudo apt-get install php-zip

W przypadku PHP 5.x

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

A następnie zrestartuj serwer Apache

sudo service apache2 restart

3

PHP 5.2.0 i nowsze

Systemy Linux

Aby móc korzystać z tych funkcji, należy skompilować PHP z obsługą zip przy użyciu opcji konfiguracji --enable-zip.

Windows

Użytkownicy systemu Windows muszą włączyć php_zip.dll w php.ini, aby móc korzystać z tych funkcji.


3

Napotkałem ten problem na GCP podczas wdrażania wordpress w środowisku App Engine Standard. To rozwiązało problem:

sudo apt-get install php7.2-zip

1

Dla Centos 7 i PHP 7.3 na Remi

Wyszukaj rozszerzenie zip:

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

Nazwa rozszerzenia to php73-php-pecl-zip.x86_64 . Aby zainstalować go na serwerze z jedną wersją PHP, usuń prefiks 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

Uruchom ponownie PHP:

$ sudo systemctl restart php-fpm

Sprawdź zainstalowane rozszerzenia PHP:

$ php -m
[PHP Modules]
apcu
bcmath
bz2
...
zip
zlib

1

Do użytku serwera opartego na CentOS

yum install php-pecl-zip.x86_64

Włącz go, uruchamiając: echo "extension=zip.so" >> /etc/php.d/zip.ini


0

Miałem ten sam problem i rozwiązałem go za pomocą dwóch linii poleceń:

sudo apt install php-zip

następnie zrestartuj serwer WWW dla Apache

sudo service apache2 restart



0

Musisz sprawdzić wersję PHP

Jeśli wersja php to 5.6, musisz zainstalować php5.7-zip

sudo apt-get install php5.6-zip

i wtedy

sudo service apache2 restart

Mam nadzieję, że to pomoże


-13

1) Powinieneś requireswój plik z ZipArchiveplikiem.

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

2) Lub użyj __autoloadmetody klasowej. W PHP 5 jest to wielka metoda __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


jak dołączyć lub wymagać pliku ZipArchive?
Parag Chaure
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.