Errore irreversibile: classe "ZipArchive" non trovata in


181

Ho un problema con l'installazione di 'Archive_Zip 0.1.1' sul server Linux, ma quando provo a eseguire lo script per creare il file zip, viene visualizzato l'errore irreversibile

Errore irreversibile: classe ZipArchivenon trovata in ...

dove ho messo il codice

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

ma non trova il file di classe.

Per favore, dimmi la soluzione. Cosa devo fare per risolvere il problema? Ho anche messo il php.inifile nella cartella in cui si trova lo script, ma non funziona.


7
Su Ubuntu utilizzaresudo apt-get install php7.2-zip
Eric Korolev

1
@EricKorolev che danno l' E: Unable to locate package php7.2-zip E: Couldn't find any package by regex 'php7.2-zip'uso di Ubuntu 14.04 con php 7.2
Muhammad Omer Aslam,

1
Su Debian 10, è semplicemente apt-get install php-zip.
aexl

È possibile visualizzare questo post: stackoverflow.com/a/60482998/4806585
VishalParkash

Risposte:


207

Perché la ZipArchiveclasse sia presente, PHP deve avere l' estensione zip installata.

Vedi questa pagina per le istruzioni di installazione (sia Linux che Windows).


1
forse non sono in grado di capire quello che faccio. Uso gli esempi forniti sugli inchiostri forniti per lo studio e per completare lo script. funziona benissimo sul mio pc (localhost) e non sul server. per favore suggerimenti per questo
Parag Chaure

49
Sul server Ubuntu usando apt-getsudo apt-get install php7.0-zip
Luddig il

9
Soluzione semplice: sudo apt-get install php7.0-zip. Quindi, modifica il file /etc/php/7.0/cli/php.ini(nella sezione "Estensioni dinamiche", aggiungi la riga extension=zip.so). Questo dovrebbe risolverlo
JonyD

21
Per Dockerdocker-php-ext-install zip
David Riccitelli,

11
Come accennato da @Luddig sul server Ubuntu dopo sudo apt-get install php7.0-zipche sarà necessario riavviare il server Apachesudo systemctl restart apache2
hashmi

82

Su Amazon ec2 con Ubuntu + nginx + php7, ho avuto gli stessi problemi, risolto usando:

sudo apt-get install php7.0-zip


dopo apt-get install php7.0-xsl ha ottenuto il problema ... non ti preoccupare solo apt-get install php7.0-zip da risolvere
bortunac

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

questo non funziona con php 7.2e dice sempreE: Unable to locate package php7.2-zip E: Couldn't find any package by regex 'php7.2-zip'
Muhammad Aslam Omer

39

Sul desktop di Ubuntu, dovevo farlo.

sudo apt-get install php5.6-zip

Questo ha installato la libreria ma continuavo a ricevere lo stesso errore, quindi ho dovuto riavviare apache usando:

sudo service apache2 restart

e ha funzionato.


1
L'apache riavviato lo ha fatto, quando combinato con la soluzione di @ pekka
gthuo,

18

Innanzitutto, la soluzione per server remoto:

Se si utilizza cpanel, è possibile che sia installata l'estensione zip ma non attivata. Devi attivarlo. Per questo caso è necessario accedere a cpanel> all'interno della sezione software> fare clic sulla versione di PHP . Quindi trova zip e controllalo. Adesso risparmia.

Dovresti vedere come l'immagine. inserisci qui la descrizione dell'immagine

Aggiorna pagina. L'errore dovrebbe scomparire.

Nota: se non si trova, contattare il provider del server. Si installeranno per te.


Questo ha funzionato per me. Stavo usando un template builder e non avrebbe esportato. Ho controllato la casella di controllo zip, salvato e voilà. Grazie Kaylan
Hblegg,

16

Non lo vedo qui, quindi vorrei aggiungere che su Debian / Ubuntu potrebbe essere necessario abilitare l'estensione dopo aver installato il relativo pacchetto. Così:

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

2
Installa php7.0-zipper PHP 7.
AnthonyB

NON DIMENTICARE IL RIAVVIO DI APACHE !!
zzapper,

1
Installa php7.1-zip per PHP 7.1, php7.2-zip per PHP 7.2.
Neo,

6

Se hai WHM disponibile è più facile.

Accedi a WHM .

Vai su EasyApache 4 (o qualunque versione tu abbia) nella scheda Software .

In Pacchetti attualmente installati, fai clic su Personalizza .

Vai a PHP Extensions , nel tipo di ricerca " zip " ( senza virgolette ),

dovresti vedere 3 moduli

controllali tutti,

fai clic alcune volte sul pulsante blu per completare il processo.

Questo ha funzionato per me. Per fortuna ho WHM disponibile.


5

Questo ha funzionato

apt-get install php7.0-zip

e non è necessario riavviare php7.0-fpmmanualmente.

Unpacking php7.0-zip( 7.0.16-4+deb.sury.org~trusty+1) ...
Elaborazione di trigger per php7.0-fpm( 7.0.11-1+deb.sury.org~trusty+1) ...
php7.0-fpmstop / attesa di
php7.0-fpmavvio / esecuzione, processo 1572
php7.0-fpmstop / attesa di
php7.0-fpmavvio / esecuzione, processo 1777
Impostazione php7.0-zip( 7.0.16-4+deb.sury.org~trusty+1) ...
locale: Impossibile impostare LC_ALLsulla locale predefinita: nessun file di questo tipo o directory

Creazione del file di configurazione /etc/php/7.0/mods-available/zip.inicon la nuova versione
Elaborazione dei trigger per php7.0-fpm( 7.0.11-1+deb.sury.org~trusty+1) ...
php7.0-fpmarresto / attesa
php7.0-fpmavvio / esecuzione, processo 2354
php7.0-fpmarresto / attesa
php7.0-fpmavvio / esecuzione, processo 2397


4

Devi anche compilare PHP con il supporto zip. Il manuale dice quanto segue:

Per usare queste funzioni devi compilare PHP con il supporto zip usando l'opzione di configurazione --enable-zip.

Non è sufficiente installare semplicemente le estensioni corrette sul server. Dai un'occhiata al link delle istruzioni di installazione che Pekka ha pubblicato in precedenza. La mia risposta è solo un suo chiarimento.


sì, ma dove dovrei eseguire questi comandi sul server in modo che php
funzioni

È un server che controlli? In tal caso, credo che faccia parte del comando make durante l'installazione di PHP. Se non è un server che controlli, l'unica opzione per te è provare a farlo fare all'amministratore di sistema. Mi dispiace non posso essere più preciso, non ho mai installato PHP su un server Linux da zero.
Jeremy,

4

Ho avuto lo stesso problema con il server installato CentOS e cPanel . Ho installato il pacchetto zipArchive tramite cPanel e non ha funzionato come previsto. Dopo aver provato con così tante correzioni suggerite ognuna e ovunque, solo il seguito ha funzionato per me.

Per prima cosa trova il nome per il pacchetto corretto con il comando seguente

yum search zip |grep -i php

Quindi utilizzare il codice seguente.

yum install your_zip_package_name_with_php_version

Nel mio caso il codice corretto per installare zipArchive era

yum install php-pecl-zip.x86_64

Ho avuto la soluzione da questo link. Come posso inserire zipArchive su PHP 7.2 con CentOS 7?

E questa installazione ha abilitato in qualche modo anche quel pacchetto e ha anche riavviato i servizi effettivi e dopo il completamento dell'esecuzione del precedente codice zipArchive era sparito.


4

Centos 6

yum install php-pecl-zip

service httpd restart

1
Grazie. Ho installato php-pecl-zip, ma senza riavviare httpd. Finalmente ho trovato la tua risposta!
Ngoc Nam,

4

Per PHP 7.x

sudo apt-get install php-zip

Per PHP 5.x

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

E quindi riavviare il server Apache

sudo service apache2 restart

3

PHP 5.2.0 e versioni successive

Sistemi Linux

Per usare queste funzioni devi compilare PHP con il supporto zip usando l'opzione di configurazione --enable-zip.

finestre

Gli utenti Windows devono abilitare php_zip.dll all'interno di php.ini per utilizzare queste funzioni.


3

Ho riscontrato questo problema su GCP durante la distribuzione di wordpress nell'ambiente Standard di App Engine. Questo ha risolto:

sudo apt-get install php7.2-zip

1

Per Centos 7 e PHP 7.3 su Remi

Cerca l'estensione zip:

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

Il nome dell'estensione è php73-php-pecl-zip.x86_64 . Per installarlo sul server che esegue la versione singola di PHP, rimuovere il prefisso 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

Riavvia PHP:

$ sudo systemctl restart php-fpm

Controlla le estensioni PHP installate:

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

1

Per l'utilizzo con server basati su CentOS

yum install php-pecl-zip.x86_64

Abilitalo eseguendo: echo "extension=zip.so" >> /etc/php.d/zip.ini


0

Ho avuto lo stesso problema e aveva risolto utilizzando due righe di comando:

sudo apt install php-zip

quindi riavviare il server Web, per Apache

sudo service apache2 restart


0

Prova a scrivere \ZIPARCHIVEinvece di ZIPARCHIVE.


0

Devi controllare la versione di PHP

Se la versione di php è 5.6, è necessario installare php5.7-zip

sudo apt-get install php5.6-zip

e poi

sudo service apache2 restart

Spero che sia d'aiuto


-13

1) Dovresti il requiretuo file con il ZipArchivefile.

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

2) Oppure usa il __autoloadmetodo di classe. In PHP 5 è un metodo greate __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


come devo includere o richiedere il file ZipArchive?
Parag Chaure,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.