Eroare fatală: Clasa ‘ZipArchive’ nu a fost găsită în (Programare, Php, Zip, Ziparchive)

Parag Chaure a intrebat.

Am o problemă: am instalat ‘Archive_Zip 0.1.1’ pe serverul Linux, dar când încerc să execut scriptul pentru a crea fișierul zip, acesta dă eroare fatală

Eroare fatală: Clasa ZipArchive not found in …

unde am pus codul

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

dar nu găsește fișierul de clasă.

Vă rog să-mi spuneți soluția. Ce ar trebui să fac pentru a rezolva problema?De asemenea, am pus php.ini în folderul în care se află scriptul, dar nu funcționează.

Comentarii

  • Pe Ubuntu folosiți sudo apt-get install php7.2-zip –  > Por Eric Korolev.
  • @EricKorolev care dă E: Unable to locate package php7.2-zip E: Couldn't find any package by regex 'php7.2-zip' folosind Ubuntu 14.04 cu php 7.2 –  > Por Reborn.
  • Pe Debian 10, este pur și simplu apt-get install php-zip. –  > Por aexl.
  • Puteți vizualiza acest post: stackoverflow.com/a/60482998/4806585 –  > Por VishalParkash.
21 răspunsuri
Pekka

Pentru ZipArchive clasa să fie prezentă, PHP trebuie să aibă clasa extensia zip instalată.

A se vedea această pagină pentru instrucțiuni de instalare (atât pentru Linux, cât și pentru Windows).

Comentarii

  • eventual, nu sunt în măsură să înțeleg că ceea ce fac. Eu folosesc exemplele care sunt date pe cernelurile pe care le furnizați pentru studiu și completați scriptul. funcționează bine pe pc-ul meu (localhost) & nu în server. vă rugăm să sugestii pentru el –  > Por Parag Chaure.
  • 54

  • Pe serverul ubuntu folosind apt-get sudo apt-get install php7.0-zip –  > Por Luddig.
  • Soluție simplă: sudo apt-get install php7.0-zip. Apoi, editați fișierul /etc/php/7.0/cli/php.ini (În secțiunea „Extensii dinamice”, adăugați linia extension=zip.so). Acest lucru ar trebui să rezolve problema –  > Por JonyD.
  • 22

  • Pentru Docker docker-php-ext-install zip –  > Por David Riccitelli.
  • După cum a menționat @Luddig pe serverul Ubuntu după ce sudo apt-get install php7.0-zip va trebui să reporniți serverul apache sudo systemctl restart apache2 –  > Por hashmi.
star18bit

Pe Amazon ec2 cu Ubuntu + nginx + php7, am avut aceleași probleme, am rezolvat-o folosind:

sudo apt-get install php7.0-zip

Comentarii

  • după apt-get install php7.0-xsl a primit problema … nu vă faceți griji doar apt-get install php7.0-zip pentru a rezolva –  > Por bortunac.
  • sudo apt-get install php7.1-zip pentru Ubuntu/php7.1 –  > Por The Onin.
  • acest lucru nu funcționează cu php 7.2 și întotdeauna spune E: Unable to locate package php7.2-zip E: Couldn't find any package by regex 'php7.2-zip' –  > Por Reborn.
Mubashar Abbas

Pe desktop-ul ubuntu, a trebuit să fac.

sudo apt-get install php5.6-zip

Acest lucru a instalat biblioteca, dar tot am continuat să primesc aceeași eroare, așa că a trebuit să repornesc apache folosind:

sudo service apache2 restart

și a funcționat.

Comentarii

  • Repornirea lui apache a făcut-o, atunci când a fost combinată cu soluția lui @pekka…  > Por gthuo.
Kalyan Halder Raaz

În primul rând, Soluția pentru serverul la distanță:

Dacă utilizați cpanel este posibil să aveți extensia zip instalată, dar nu este activată. Trebuie să o activați. Pentru acest caz trebuie să mergeți la cpanel > în interiorul secțiunii software > faceți clic pe versiunea PHP. Apoi găsiți zip și verificați-l. Acum salvați.

Ar trebui să vedeți ca în imagine.

Actualizați pagina. Eroarea ar trebui să dispară.

Notă: Dacă nu ați găsit-o, contactați furnizorul de server. Ei vor instala pentru dumneavoastră.

Comentarii

  • Acest lucru a funcționat pentru mine. Foloseam un constructor de șabloane și nu exporta. Am bifat căsuța de verificare zip, am salvat și voila. Mulțumesc Kaylan –  > Por Hblegg.
lorenzo-s

Nu văd asta aici, așa că aș dori să adaug că pe Debian/Ubuntu s-ar putea să fie nevoie să activați extensia după instalarea pachetului relativ. Deci:

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

Comentarii

  • Instalați php7.0-zip pentru PHP 7. –  > Por AnthonyB.
  • NU UITAȚI DE REPORNIREA APACHE!!! –  > Por zzapper.
  • Instalați php7.1-zip pentru PHP 7.1, php7.2-zip pentru PHP 7.2. –  > Por Neo.
  • Din câte știu eu, nu este nevoie să specificați versiunea PHP. „sudo apt-get install php-zip” va selecta versiunea PHP a sistemului dumneavoastră și a fost suficient la instalarea pentru php7.3 –  > Por Gareth Nel.
zzapper

Centos 6

Sau orice versiune bazată pe RHEL

yum install php-pecl-zip

service httpd restart

Comentarii

  • Vă mulțumim. Am instalat php-pecl-zip, dar fără să repornesc httpd. În sfârșit am găsit răspunsul dumneavoastră! –  > Por Ngoc Nam.
  • Acest lucru a funcționat, de asemenea, pentru Amazon Linux –  > Por Abel Callejo.
temo

Dacă aveți WHM disponibil, este mai ușor.

Conectați-vă la WHM.

Mergeți la EasyApache 4 (sau orice versiune pe care o aveți) sub Software fila .

Sub Pachete instalate în prezent faceți clic pe Personalizați.

Mergeți la Extensii PHP, , în căutare tastați „zip” (fără ghilimele),

ar trebui să vedeți 3 module

verificați-le pe toate,

faceți clic pe butonul albastru de câteva ori pentru a finaliza procesul.

Acest lucru a funcționat pentru mine. Din fericire, am WHM disponibil.

Jeremy

De asemenea, trebuie să compilați PHP cu suport zip. Manualul spune următoarele:

Pentru a utiliza aceste funcții, trebuie să compilați PHP cu suport zip folosind opțiunea de configurare –enable-zip.

Nu este suficient să instalați pur și simplu extensiile corecte pe server. Aruncați o privire la link-ul cu instrucțiunile de instalare pe care Pekka l-a postat mai devreme. Răspunsul meu este doar o clarificare a lui.

Comentarii

  • da, dar unde ar trebui să execut aceste comenzi pe server pentru ca php să ruleze cu suport zip –  > Por Parag Chaure.
  • Este un server pe care îl controlați? Dacă da, cred că face parte din comanda make la instalarea PHP. Dacă nu este un server pe care îl controlezi, atunci singura opțiune pentru tine este să încerci să pui administratorul de sistem să o facă. Îmi pare rău că nu pot fi mai precis – nu am instalat niciodată PHP pe un server linux de la zero. –  > Por Jeremy.
  • Pot să confirm. Instalarea tuturor acestor pachete nu a funcționat. A trebuit să ./configurez din nou PHP cu --enable-zip opțiune și să fac && make install din nou (PHP 7.4.8 debian). –  > Por Mtxz.
prosti

A funcționat

apt-get install php7.0-zip

și nu a fost nevoie să reporniți php7.0-fpm manual.

Despachetarea php7.0-zip (7.0.16-4+deb.sury.org~trusty+1) …
Procesarea declanșatorilor pentru php7.0-fpm (7.0.11-1+deb.sury.org~trusty+1) …
php7.0-fpm oprire/în așteptare
php7.0-fpm pornire/în curs de execuție, proces 1572
php7.0-fpm oprire/în așteptare
php7.0-fpm start/running, proces 1777
Configurarea php7.0-zip (7.0.16-4+deb.sury.org~trusty+1) …
locale: Nu se poate seta LC_ALL la limba implicită: Nu există un astfel de fișier sau director

Crearea fișierului de configurare /etc/php/7.0/mods-available/zip.ini cu noua versiune
Procesarea declanșărilor pentru php7.0-fpm (7.0.11-1+deb.sury.org~trusty+1) …
php7.0-fpm oprire/în așteptare
php7.0-fpm start/în curs de execuție, proces 2354
php7.0-fpm oprire/în așteptare
php7.0-fpm start/running, proces 2397

antonD

Am avut aceeași problemă cu CentOS și cPanel server instalat. Am instalat pachetul zipArchive prin cPanel și nu a funcționat așa cum era de așteptat.După ce am încercat cu atât de multe remedieri sugerate de fiecare și peste tot, doar cele de mai jos au funcționat pentru mine.

În primul rând găsiți numele pentru pachetul corect cu comanda de mai jos

yum search zip |grep -i php

Apoi, utilizați codul de mai jos.

yum install your_zip_package_name_with_php_version

În cazul meu, codul corect pentru a instala zipArchive a fost

yum install php-pecl-zip.x86_64

Am avut soluția din acest link.Cum pot inslatt zipArchive pe PHP 7.2 cu CentOS 7?

Și această instalare a activat cumva și acel pachet și a repornit și serviciile cu efect, iar după terminarea executării codului de mai sus problema zipArchive a dispărut.

Santo Boldizar

Pentru PHP 7.x

sudo apt-get install php-zip

Pentru PHP 5.x

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

Apoi reporniți serverul Apache

sudo service apache2 restart

kiatng

Pentru Centos 7 și PHP 7.3 pe Remi

Căutați extensia zip:

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

Numele extensiei este php73-php-pecl-zip.x86_64. Pentru a o instala pe un server care rulează o singură versiune de PHP, eliminați prefixul 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

Reporniți PHP:

$ sudo systemctl restart php-fpm

Verificați extensiile PHP instalate:

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

Vineesh Kalarickal

PHP 5.2.0 și versiunile ulterioare

Sisteme Linux

Pentru a utiliza aceste funcții, trebuie să compilați PHP cu suport pentru zip, utilizând opțiunea de configurare –enable-zip.

Windows

Utilizatorii de Windows trebuie să activeze php_zip.dll în interiorul php.ini pentru a putea utiliza aceste funcții.

Omar Shabab

M-am confruntat cu această problemă pe GCP în timpul implementării wordpress în mediul App Engine Standard. Acest lucru a rezolvat-o :

sudo apt-get install php7.2-zip

Wolfack

Pentru serverul bazat pe CentOS, utilizați

yum install php-pecl-zip.x86_64

Activați-l prin rularea: echo "extension=zip.so" >> /etc/php.d/zip.ini

Sundar

Trebuie să verificați versiunea PHP

Dacă versiunea php este 5.6, atunci trebuie să instalați php5.7-zip.

sudo apt-get install php5.6-zip

și apoi

sudo service apache2 restart

Sper că vă ajută

Doberon

Pentru mine funcționează, prima revizuire

   php -m
   php -version

Mai târziu instalați extensia

apt-get update 
apt-get install php7.2-zip
systemctl restart apache2

Capripot

Dacă vă confruntați cu această eroare în timp ce utilizați o imagine Docker și că apelați clasa în mod corespunzător, sau că eroarea provine de la o bibliotecă actualizată, atunci extensia zip modul lipsește probabil.

Presupunând că folosim docker-compose, , putem confirma că lipsește prin rularea lui docker-compose run php php -m de exemplu și să vedem că zip nu este listat.

Pentru a-l instala în imaginea dvs., modificați Dockerfile astfel încât să facă același lucru ca în acest exemplu.

FROM php:7.3-apache 

RUN set -eux 
    && apt-get update 
    && apt-get install -y libzip-dev zlib1g-dev 
    && docker-php-ext-install zip

Apoi reconstruiți imaginea cu docker-compose build php și puteți începe.

Despre elnouR

Am avut aceeași problemă și am rezolvat-o folosind două linii de comandă:

sudo apt install php-zip

apoi reporniți serverul web, pentru Apache

sudo service apache2 restart

URL87

Încercați să scrieți ZIPARCHIVE în loc de ZIPARCHIVE.

Alex Pliutau

1) Ar trebui să require fișierul dvs. cu ZipArchive fișier.

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

2) Sau folosiți __autoload din clasă.În PHP 5 este o metodă excelentă __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

Comentarii

  • cum ar trebui să includ sau să cer fișierul ZipArchive? –  > Por Parag Chaure.