Erreur fatale: la classe 'ZipArchive' est introuvable dans


181

J'ai un problème lorsque j'installe 'Archive_Zip 0.1.1' sur un serveur Linux, mais lorsque j'essaye d'exécuter le script pour créer le fichier zip, cela donne l'erreur fatale

Erreur fatale: classe ZipArchiveintrouvable dans ...

où j'ai mis le code

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

mais il ne trouve pas le fichier de classe.

Veuillez me dire la solution. Que dois-je faire pour résoudre le problème? J'ai également mis le php.inifichier dans le dossier où se trouve le script, mais cela ne fonctionne pas.


7
Sur l'utilisation d'Ubuntusudo apt-get install php7.2-zip
Eric Korolev

1
@EricKorolev qui donne en E: Unable to locate package php7.2-zip E: Couldn't find any package by regex 'php7.2-zip'utilisant ubuntu 14.04 avec php 7.2
Muhammad Omer Aslam

1
Sur Debian 10, c'est tout simplement apt-get install php-zip.
aexl

Vous pouvez voir cet article: stackoverflow.com/a/60482998/4806585
VishalParkash

Réponses:


207

Pour que la ZipArchiveclasse soit présente, PHP doit avoir l' extension zip installée.

Consultez cette page pour les instructions d'installation (Linux et Windows).


1
je ne peux peut-être pas comprendre ce que je fais. J'utilise les exemples qui sont donnés sur les encres que vous fournissez pour étudier et compléter le script. cela fonctionne bien sur mon PC (localhost) et pas sur le serveur. s'il vous plaît des suggestions pour cela
Parag Chaure

49
Sur le serveur ubuntu utilisant apt-getsudo apt-get install php7.0-zip
Luddig

9
Solution simple: sudo apt-get install php7.0-zip. Ensuite, modifiez le fichier /etc/php/7.0/cli/php.ini(dans la section "Extensions dynamiques", ajoutez la ligne extension=zip.so). Cela devrait le résoudre
JonyD

21
Pour Dockerdocker-php-ext-install zip
David Riccitelli

11
Comme mentionné par @Luddig sur le serveur ubuntu après sudo apt-get install php7.0-zipvous devrez redémarrer le serveur apachesudo systemctl restart apache2
hashmi

82

Sur Amazon ec2 avec Ubuntu + nginx + php7, j'ai eu les mêmes problèmes, je les ai résolus en utilisant:

sudo apt-get install php7.0-zip


après apt-get install php7.0-xsl a eu le problème ... ne vous inquiétez pas juste apt-get install php7.0-zip à résoudre
bortunac

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

cela ne fonctionne pas avec php 7.2et dit toujoursE: Unable to locate package php7.2-zip E: Couldn't find any package by regex 'php7.2-zip'
Muhammad Omer Aslam

39

Sur le bureau ubuntu, je devais le faire.

sudo apt-get install php5.6-zip

Cela a installé la bibliothèque mais j'ai toujours eu la même erreur, j'ai donc dû redémarrer apache en utilisant:

sudo service apache2 restart

et cela a fonctionné.


1
Le redémarrage d'Apache l'a fait, lorsqu'il est combiné avec la solution de @ pekka
gthuo

18

Tout d'abord, la solution pour serveur distant:

Si vous utilisez cpanel, l' extension zip peut être installée mais pas activée. Vous devez l'activer. Dans ce cas, vous devez aller dans cpanel> section du logiciel interne> cliquez sur la version PHP . Ensuite, trouvez zip et vérifiez-le. Maintenant économisez.

Vous devriez voir comme l'image. entrez la description de l'image ici

Rafraîchir la page. L'erreur devrait disparaître.

Remarque: si vous ne trouvez pas, contactez le fournisseur du serveur. Ils installeront pour vous.


Cela a fonctionné pour moi. J'utilisais un générateur de modèles et il n'exportait pas. J'ai vérifié la case à cocher zip, enregistré et le tour est joué. Merci Kaylan
Hblegg

16

Je ne le vois pas ici, donc j'aimerais ajouter que sur Debian / Ubuntu, vous devrez peut-être activer l'extension après avoir installé le paquet relatif. Alors:

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

2
Installer php7.0-zippour PHP 7.
AnthonyB

N'OUBLIEZ PAS LE REDÉMARRAGE APACHE !!
zzapper

1
Installez php7.1-zip pour PHP 7.1, php7.2-zip pour PHP 7.2.
Neo

6

Si vous disposez de WHM, c'est plus facile.

Connectez-vous à WHM .

Accédez à EasyApache 4 (ou quelle que soit la version que vous avez) sous l' onglet Logiciel .

Sous Packages actuellement installés, cliquez sur Personnaliser .

Allez dans Extensions PHP , dans le type de recherche " zip " ( sans guillemets ),

vous devriez voir 3 modules

les vérifier tous,

cliquez plusieurs fois sur le bouton bleu pour terminer le processus.

Cela a fonctionné pour moi. Heureusement, j'ai WHM disponible.


5

Cela a fonctionné

apt-get install php7.0-zip

et pas besoin de redémarrer php7.0-fpmmanuellement.

Unpacking php7.0-zip( 7.0.16-4+deb.sury.org~trusty+1) ...
Traitement des déclencheurs pour php7.0-fpm( 7.0.11-1+deb.sury.org~trusty+1) ...
php7.0-fpmarrêt / attente
php7.0-fpmdémarrage / exécution, processus 1572
php7.0-fpmarrêt / attente
php7.0-fpmdémarrage / exécution, processus 1777
Configuration php7.0-zip( 7.0.16-4+deb.sury.org~trusty+1) ...
locale: impossible de définir les LC_ALLparamètres régionaux par défaut: aucun fichier de ce type ou annuaire

Création d'un fichier de configuration /etc/php/7.0/mods-available/zip.iniavec une nouvelle version
Traitement des déclencheurs pour php7.0-fpm( 7.0.11-1+deb.sury.org~trusty+1) ...
php7.0-fpmarrêt / attente
php7.0-fpmdémarrage / exécution, processus 2354
php7.0-fpmarrêt / attente
php7.0-fpmdémarrage / exécution, processus 2397


4

Vous devez également compiler PHP avec le support zip. Le manuel dit ce qui suit:

Pour utiliser ces fonctions, vous devez compiler PHP avec le support zip en utilisant l'option de configuration --enable-zip.

Il ne suffit pas d'installer simplement les bonnes extensions sur le serveur. Jetez un œil au lien des instructions d'installation Pekka publié plus tôt. Ma réponse n'est qu'une clarification de la sienne.


oui, mais où dois-je exécuter ces commandes sur le serveur pour que php fonctionne avec le support zip
Parag Chaure

Est-ce un serveur que vous contrôlez? Si c'est le cas, je pense que cela fait partie de la commande make lors de l'installation de PHP. Si ce n'est pas un serveur que vous contrôlez, la seule option pour vous est d'essayer de demander à l'administrateur système de le faire. Désolé, je ne peux pas être plus précis - je n'ai jamais installé PHP sur un serveur Linux à partir de zéro.
Jeremy

4

J'ai eu le même problème avec CentOS et cPanel serveur installé . J'ai installé le package zipArchive via cPanel et je n'ai pas fonctionné comme prévu. Après avoir essayé avec autant de correctifs suggérés partout, juste ce qui suit a fonctionné pour moi.

Trouvez d'abord le nom du package correct avec la commande ci-dessous

yum search zip |grep -i php

Ensuite, utilisez le code ci-dessous.

yum install your_zip_package_name_with_php_version

Dans mon cas, le code correct pour installer zipArchive était

yum install php-pecl-zip.x86_64

J'ai eu la solution à partir de ce lien. Comment puis-je insérer zipArchive sur PHP 7.2 avec CentOS 7?

Et cette installation a également activé ce package d'une manière ou d'une autre et a également redémarré les services concernés et, une fois l'exécution du code ci-dessus, le problème zipArchive a disparu.


4

Centos 6

yum install php-pecl-zip

service httpd restart

1
Je vous remercie. J'ai installé php-pecl-zip, mais sans redémarrer httpd. Enfin trouvé votre réponse!
Ngoc Nam

3

PHP 5.2.0 et supérieur

Systèmes Linux

Pour utiliser ces fonctions, vous devez compiler PHP avec le support zip en utilisant l'option de configuration --enable-zip.

les fenêtres

Les utilisateurs Windows doivent activer php_zip.dll dans php.ini pour pouvoir utiliser ces fonctions.


3

J'ai rencontré ce problème sur GCP lors du déploiement de wordpress dans l'environnement standard App Engine. Cela l'a résolu:

sudo apt-get install php7.2-zip

3

Pour PHP 7.x

sudo apt-get install php-zip

Pour PHP 5.x

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

Et puis redémarrez le serveur Apache

sudo service apache2 restart

1

Pour Centos 7 et PHP 7.3 sur Remi

Recherchez l'extension zip:

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

Le nom de l'extension est php73-php-pecl-zip.x86_64 . Pour l'installer sur un serveur exécutant une seule version de PHP, supprimez le préfixe 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

Redémarrez PHP:

$ sudo systemctl restart php-fpm

Vérifiez les extensions PHP installées:

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

1

Pour l'utilisation d'un serveur basé sur CentOS

yum install php-pecl-zip.x86_64

Activez-le en exécutant: echo "extension=zip.so" >> /etc/php.d/zip.ini


0

J'ai eu le même problème et il avait été résolu en utilisant deux lignes de commande:

sudo apt install php-zip

puis redémarrez votre serveur web, pour Apache

sudo service apache2 restart


0

Essayez d'écrire \ZIPARCHIVEau lieu de ZIPARCHIVE.


0

Vous devez vérifier la version PHP

Si la version php est 5.6, vous devez installer php5.7-zip

sudo apt-get install php5.6-zip

puis

sudo service apache2 restart

J'espère que ça aide


-13

1) Vous devriez requirevotre fichier avec ZipArchivefichier.

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

2) Ou utilisez la __autoloadméthode de la classe. En PHP 5, c'est une excellente méthode __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


comment dois-je inclure ou exiger un fichier ZipArchive?
Parag Chaure du
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.