Schwerwiegender Fehler: Klasse 'ZipArchive' nicht gefunden in

178

Ich habe ein Problem, dass ich 'Archive_Zip 0.1.1' auf einem Linux-Server installiere, aber wenn ich versuche, das Skript zum Erstellen der Zip-Datei auszuführen, wird der schwerwiegende Fehler angezeigt

Schwerwiegender Fehler: Klasse ZipArchivenicht gefunden in ...

wo ich den Code platziere

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

Die Klassendatei wird jedoch nicht gefunden.

Bitte sagen Sie mir die Lösung. Was soll ich tun, um das Problem zu beheben? Ich habe auch eine php.iniDatei in den Ordner gelegt , in dem sich das Skript befindet, aber es funktioniert nicht.

Parag Chaure
quelle
6
Auf Ubuntu verwendensudo apt-get install php7.2-zip
Eric Korolev
1
@ EricKorolev, die E: Unable to locate package php7.2-zip E: Couldn't find any package by regex 'php7.2-zip'mit Ubuntu 14.04 mit PHP 7.2 geben
Muhammad Omer Aslam
1
Auf Debian 10 ist es einfach apt-get install php-zip.
Aexl
Sie können diesen Beitrag anzeigen
VishalParkash

Antworten:

204

Damit die ZipArchiveKlasse vorhanden ist, muss in PHP die Zip-Erweiterung installiert sein.

Auf dieser Seite finden Sie Installationsanweisungen (sowohl Linux als auch Windows).

Pekka
quelle
1
möglicherweise kann ich das, was ich tue, nicht verstehen. Ich verwende die Beispiele, die auf den Tinten angegeben sind, die Sie für das Studium bereitstellen, und vervollständige das Skript. Es funktioniert gut auf meinem PC (localhost) und nicht auf dem Server. Bitte Vorschläge dafür
Parag Chaure
48
Auf Ubuntu-Server mit apt-getsudo apt-get install php7.0-zip
Luddig
8
Einfache Lösung : sudo apt-get install php7.0-zip. Bearbeiten Sie dann die Datei /etc/php/7.0/cli/php.ini(Fügen Sie im Abschnitt "Dynamische Erweiterungen" die Zeile hinzu extension=zip.so). Dies sollte es lösen
JonyD
21
Für Dockerdocker-php-ext-install zip
David Riccitelli
11
Wie von @Luddig auf dem Ubuntu-Server erwähnt, nachdem sudo apt-get install php7.0-zipSie den Apache-Server neu starten müssensudo systemctl restart apache2
Hashmi
82

Auf Amazon ec2 mit Ubuntu + nginx + php7 hatte ich die gleichen Probleme und löste sie mit:

sudo apt-get install php7.0-zip

star18bit
quelle
Nach der Installation von apt-get hat php7.0-xsl das Problem bekommen ... keine Sorge, nur apt-get installiert php7.0-zip zu lösen
bortunac
sudo apt-get install php7.1-zipfür Ubuntu / php7.1
Nino Škopac
das funktioniert nicht mit php 7.2und sagt immerE: Unable to locate package php7.2-zip E: Couldn't find any package by regex 'php7.2-zip'
Muhammad Omer Aslam
38

Auf Ubuntu Desktop musste ich tun.

sudo apt-get install php5.6-zip

Dadurch wurde die Bibliothek installiert, aber ich bekam immer noch den gleichen Fehler, sodass ich Apache neu starten musste mit:

sudo service apache2 restart

und es hat funktioniert.

Mubashar Abbas
quelle
Der neu startende Apache hat es geschafft, wenn er mit @ pekkas Lösung kombiniert wurde
gthuo
18

Zunächst die Lösung für Remote-Server:

Wenn Sie cpanel verwenden , ist möglicherweise die Zip-Erweiterung installiert, aber nicht aktiviert. Sie müssen es aktivieren. In diesem Fall müssen Sie zu cpanel> im Softwareabschnitt gehen> auf PHP-Version klicken . Dann finde zip und überprüfe es. Speichern Sie jetzt.

Sie sollten wie das Bild sehen. Geben Sie hier die Bildbeschreibung ein

Seite neu laden. Der Fehler sollte verschwinden.

Hinweis: Wenn Sie nicht gefunden haben, wenden Sie sich an den Serveranbieter. Sie werden für Sie installiert.

Kalyan Halder Raaz
quelle
Das hat bei mir funktioniert. Ich habe einen Template Builder verwendet, der nicht exportiert werden konnte. Ich habe das Kontrollkästchen für die Postleitzahl aktiviert, gespeichert und voila. Vielen Dank, dass Sie Kaylan
Hblegg
16

Ich sehe es hier nicht, daher möchte ich hinzufügen, dass Sie unter Debian / Ubuntu möglicherweise die Erweiterung aktivieren müssen, nachdem Sie das entsprechende Paket installiert haben. So:

sudo apt-get install php-zip
sudo phpenmod zip
sudo service apache2 restart
Lorenzo-s
quelle
2
Installieren Sie php7.0-zipfür PHP 7.
AnthonyB
VERGESSEN SIE NICHT DEN APACHE-NEUSTART !!
Zzapper
1
Installieren Sie php7.1-zip für PHP 7.1, php7.2-zip für PHP 7.2.
Neo
6

Wenn Sie WHM zur Verfügung haben, ist es einfacher.

Melden Sie sich bei WHM an .

Gehen Sie zu EasyApache 4 (oder einer anderen Version) auf der Registerkarte Software .

Klicken Sie unter Derzeit installierte Pakete auf Anpassen .

Gehen Sie zu PHP Extensions , in Suchtyp " zip " ( ohne Anführungszeichen ),

Sie sollten 3 Module sehen

überprüfe sie alle,

Klicken Sie einige Male auf die blaue Schaltfläche, um den Vorgang abzuschließen.

Das hat bei mir funktioniert. Zum Glück habe ich WHM zur Verfügung.

temo
quelle
5

Das hat funktioniert

apt-get install php7.0-zip

und kein php7.0-fpmmanueller Neustart erforderlich .

Entpacken php7.0-zip( 7.0.16-4+deb.sury.org~trusty+1) ...
Verarbeiten von Triggern für php7.0-fpm( 7.0.11-1+deb.sury.org~trusty+1) ...
php7.0-fpmStoppen / Warten
php7.0-fpmStart / Ausführen, Prozess 1572
php7.0-fpmStoppen / Warten
php7.0-fpmStart / Ausführen, Prozess 1777
Einrichten php7.0-zip( 7.0.16-4+deb.sury.org~trusty+1) ...
Gebietsschema: LC_ALLStandard-Gebietsschema kann nicht festgelegt werden : Keine solche Datei oder Verzeichnis

Konfigurationsdatei /etc/php/7.0/mods-available/zip.inimit neuer Version erstellen
Verarbeitungsauslöser für php7.0-fpm( 7.0.11-1+deb.sury.org~trusty+1) ...
php7.0-fpmStopp / Warten
php7.0-fpmStart / Laufen, Prozess 2354
php7.0-fpmStopp / Warten
php7.0-fpmStart / Laufen, Prozess 2397

Prosti
quelle
4

Sie müssen auch PHP mit Zip-Unterstützung kompilieren. Das Handbuch sagt Folgendes:

Um diese Funktionen nutzen zu können, müssen Sie PHP mit Zip-Unterstützung mithilfe der Option --enable-zip configure kompilieren.

Es reicht nicht aus, nur die richtigen Erweiterungen auf dem Server zu installieren. Schauen Sie sich den Link zu den Installationsanweisungen an, den Pekka zuvor gepostet hat. Meine Antwort ist nur eine Klarstellung von ihm.

Jeremy
quelle
Ja, aber wo soll ich diese Befehle auf dem Server ausführen, damit PHP mit Zip-Unterstützung ausgeführt wird
Parag Chaure
Ist es ein Server, den Sie steuern? Wenn ja, glaube ich, ist es Teil des Befehls make bei der Installation von PHP. Wenn es sich nicht um einen Server handelt, den Sie steuern, können Sie nur versuchen, den Systemadministrator dazu zu bringen. Entschuldigung, ich kann nicht genauer sein - ich habe PHP noch nie von Grund auf auf einem Linux-Server installiert.
Jeremy
4

Ich hatte das gleiche Problem mit dem installierten CentOS- und cPanel- Server. Ich habe das zipArchive-Paket über cPanel installiert und nicht wie erwartet funktioniert. Nachdem ich es mit so vielen Korrekturen versucht hatte, schlug jeder für mich nur das Folgende vor.

Suchen Sie zuerst den Namen für das richtige Paket mit dem folgenden Befehl

yum search zip |grep -i php

Verwenden Sie dann den folgenden Code.

yum install your_zip_package_name_with_php_version

In meinem Fall war der richtige Code zum Installieren von zipArchive

yum install php-pecl-zip.x86_64

Ich hatte die Lösung von diesem Link. Wie kann ich zipArchive unter PHP 7.2 mit CentOS 7 einbinden?

Und diese Installation hat irgendwie auch dieses Paket aktiviert und auch die betroffenen Dienste neu gestartet und nach Abschluss der Ausführung des obigen Codes war das zipArchive-Problem verschwunden.

antonD
quelle
4

Centos 6

yum install php-pecl-zip

service httpd restart
zzapper
quelle
1
Danke dir. Ich habe php-pecl-zip installiert, aber ohne httpd neu zu starten. Endlich deine Antwort gefunden!
Ngoc Nam
3

PHP 5.2.0 und höher

Linux-Systeme

Um diese Funktionen nutzen zu können, müssen Sie PHP mit Zip-Unterstützung mithilfe der Option --enable-zip configure kompilieren.

Windows

Windows-Benutzer müssen php_zip.dll in php.ini aktivieren, um diese Funktionen nutzen zu können.

Vineesh Kalarickal
quelle
3

Ich habe dieses Problem bei GCP festgestellt, als ich WordPress in der App Engine Standard-Umgebung bereitgestellt habe. Dies löste es:

sudo apt-get install php7.2-zip
Omar
quelle
3

Für PHP 7.x.

sudo apt-get install php-zip

Für PHP 5.x.

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

Starten Sie anschließend den Apache-Server neu

sudo service apache2 restart
Santo Boldižar
quelle
1

Für Centos 7 und PHP 7.3 auf Remi

Suchen Sie nach der Zip-Erweiterung:

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

Der Name der Erweiterung lautet php73-php-pecl-zip.x86_64 . Entfernen Sie das Präfix php73, um es auf einem Server zu installieren, auf dem eine einzelne Version von PHP ausgeführt wird:

$ 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

Starten Sie PHP neu:

$ sudo systemctl restart php-fpm

Überprüfen Sie die installierten PHP-Erweiterungen:

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

Für CentOS-basierte Server verwenden

yum install php-pecl-zip.x86_64

Aktivieren Sie es, indem Sie Folgendes ausführen: echo "extension=zip.so" >> /etc/php.d/zip.ini

Wolfack
quelle
0

Ich hatte das gleiche Problem und es wurde mit zwei Befehlszeilen gelöst:

sudo apt install php-zip

Starten Sie dann Ihren Webserver für Apache neu

sudo service apache2 restart

AboElnouR
quelle
0

Versuchen Sie schreiben \ZIPARCHIVEstatt ZIPARCHIVE.

URL87
quelle
0

Sie müssen die PHP-Version überprüfen

Wenn die PHP-Version 5.6 ist, müssen Sie PHP5.7-Zip installieren

sudo apt-get install php5.6-zip

und dann

sudo service apache2 restart

Ich hoffe es hilft

Sundar
quelle
-13

1) Sie sollten requireIhre Datei mit ZipArchiveDatei.

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

2) Oder verwenden Sie die __autoloadKlassenmethode. In PHP 5 ist es eine großartige Methode __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
quelle
Wie soll ich eine ZipArchive-Datei einschließen oder benötigen?
Parag Chaure