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.

Parag Chaure
la source
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).

Pekka
la source
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

étoile18bit
la source
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é.

Mubashar Abbas
la source
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.

Kalyan Halder Raaz
la source
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
lorenzo-s
la source
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.

temo
la source
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

prosti
la source
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.

Jérémie
la source
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.

antonD
la source
4

Centos 6

yum install php-pecl-zip

service httpd restart
zzapper
la source
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.

Vineesh Kalarickal
la source
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
Omar Shabab
la source
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
Santo Boldižar
la source
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
kiatng
la source
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

Wolfack
la source
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

AboElnouR
la source
0

Essayez d'écrire \ZIPARCHIVEau lieu de ZIPARCHIVE.

URL87
la source
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

Sundar
la source
-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

Alex Pliutau
la source
comment dois-je inclure ou exiger un fichier ZipArchive?
Parag Chaure du