249 votes

Erreur fatale : La classe 'ZipArchive' n'a pas été trouvée dans

J'ai un problème : j'ai installé 'Archive_Zip 0.1.1' sur un serveur Linux, mais lorsque j'essaie d'exécuter le script pour créer le fichier zip, l'erreur fatale suivante se produit

Erreur fatale : Classe ZipArchive introuvable dans ...

où je mets 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 m'indiquer la solution. Que dois-je faire pour résoudre le problème ? J'ai également mis php.ini dans le dossier où se trouve script, mais cela ne fonctionne pas.

2voto

Capripot Points 369

Si vous rencontrez cette erreur lors de l'utilisation d'une image Docker et que vous appelez la classe correctement, ou que l'erreur provient d'une bibliothèque à jour, alors l'option zip est probablement manquant.

En supposant que nous utilisions docker-compose Nous pouvons confirmer son absence en exécutant la commande docker-compose run php php -m par exemple et voir que zip n'est pas répertorié.

Pour l'installer dans votre image, modifiez votre Dockerfile il fait donc la même chose que dans cet exemple.

FROM php:7.3-apache 

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

Reconstruisez ensuite l'image avec docker-compose build php et vous êtes prêt à partir.

2voto

alex toader Points 191

Pour PHP 7.4 > ZipArchive n'est plus présent par défaut et vous devez l'installer et le configurer.

Je suggère fortement d'utiliser une bibliothèque que vous pouvez simplement inclure dans votre projet - comme https://github.com/zanysoft/laravel-zip Cette bibliothèque n'est qu'une enveloppe pour la bibliothèque native ZipArchive

1voto

Wolfack Points 923

Pour les serveurs basés sur CentOS, utiliser

yum install php-pecl-zip.x86_64

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

1voto

Sundar Points 197

Vous devez vérifier la version de PHP

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

sudo apt-get install php5.6-zip

et ensuite

sudo service apache2 restart

J'espère que cela vous aidera

0voto

URL87 Points 1689

Essayez d'écrire \ZIPARCHIVE au lieu de ZIPARCHIVE .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X