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.

Parag Chaure
źródło
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
Możesz zobaczyć ten post: stackoverflow.com/a/60482998/4806585
VishalParkash

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

Pekka
źródło
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

star18bit
źródło
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.

Mubashar Abbas
źródł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.

Kalyan Halder Raaz
źródło
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
lorenzo-s
źródło
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.

temo
źródło
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

prosti
źródło
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.

Jeremy
źródło
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ął.

antonD
źródło
4

Centos 6

yum install php-pecl-zip

service httpd restart
zzapper
źródło
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
Santo Boldižar
źródło
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.

Vineesh Kalarickal
źródło
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
Omar Shabab
źródło
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
kiatng
źródło
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

Wolfack
źródło
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

AboElnouR
źródło
0

Spróbuj \ZIPARCHIVEzamiast tego pisać ZIPARCHIVE.

URL87
źródło
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

Sundar
źródło
-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

Alex Pliutau
źródło
jak dołączyć lub wymagać pliku ZipArchive?
Parag Chaure