Error fatal: la clase 'ZipArchive' no se encuentra en

181

Tengo un problema al instalar 'Archive_Zip 0.1.1' en el servidor Linux, pero cuando intento ejecutar el script para crear el archivo zip, aparece el error fatal

Error fatal: clase ZipArchiveno encontrada en ...

donde pongo el código

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

pero no encuentra el archivo de clase.

Por favor dime la solución. ¿Qué debo hacer para resolver el problema? También pongo el php.iniarchivo en la carpeta donde está el script, pero no funciona.

Parag Chaure
fuente
77
Sobre el uso de Ubuntusudo apt-get install php7.2-zip
Eric Korolev
1
@EricKorolev que dan E: Unable to locate package php7.2-zip E: Couldn't find any package by regex 'php7.2-zip'usando ubuntu 14.04 con php 7.2
Muhammad Omer Aslam
1
En Debian 10, es simplemente apt-get install php-zip.
aexl
Puede ver esta publicación: stackoverflow.com/a/60482998/4806585
VishalParkash

Respuestas:

207

Para que la ZipArchiveclase esté presente, PHP necesita tener instalada la extensión zip .

Consulte esta página para obtener instrucciones de instalación (Linux y Windows).

Pekka
fuente
1
posiblemente no pueda entender lo que hago. Utilizo los ejemplos que se dan en las tintas que proporciona para estudiar y completar el guión. funciona bien en mi pc (localhost) y no en el servidor. por favor sugerencias para ello
Parag Chaure
49
En el servidor ubuntu usando apt-getsudo apt-get install php7.0-zip
Luddig
9
Una solución simple: sudo apt-get install php7.0-zip. Luego, edite el archivo /etc/php/7.0/cli/php.ini(en la sección "Extensiones dinámicas", agregue la línea extension=zip.so). Esto debería resolverlo
JonyD
21
Para Dockerdocker-php-ext-install zip
David Riccitelli
11
Como mencionó @Luddig en el servidor ubuntu después de sudo apt-get install php7.0-zipque deba reiniciar el servidor apachesudo systemctl restart apache2
hashmi
82

En Amazon ec2 con Ubuntu + nginx + php7, tuve los mismos problemas, lo resolví usando:

sudo apt-get install php7.0-zip

star18bit
fuente
después de apt-get install php7.0-XSL tiene el problema ... no se preocupe simplemente apt-get install zip-php7.0 para resolver
bortunac
sudo apt-get install php7.1-zippara Ubuntu / php7.1
Nino Škopac
esto no funciona php 7.2y siempre diceE: Unable to locate package php7.2-zip E: Couldn't find any package by regex 'php7.2-zip'
Muhammad Omer Aslam
39

En el escritorio ubuntu, tuve que hacer.

sudo apt-get install php5.6-zip

Esto instaló la biblioteca pero seguí recibiendo el mismo error, así que tuve que reiniciar Apache usando:

sudo service apache2 restart

Y funcionó.

Mubashar Abbas
fuente
1
El reinicio de apache lo hizo, cuando se combinó con la solución de
@pekka
18

En primer lugar, la solución para el servidor remoto:

Si está utilizando cpanel, es posible que tenga instalada la extensión zip pero no la active. Necesitas activarlo. Para este caso, debe ir a cpanel> dentro de la sección de software> hacer clic en la versión de PHP . Luego encuentra zip y revísalo. Ahora guarda.

Deberías ver como la imagen. ingrese la descripción de la imagen aquí

Actualizar página. El error debería desaparecer.

Nota: Si no lo encuentra, póngase en contacto con el proveedor del servidor. Se instalarán por ti.

Kalyan Halder Raaz
fuente
Esto funcionó para mí. Estaba usando un generador de plantillas y no se exportaba. Marqué la casilla de verificación zip, guardado y listo. Gracias Kaylan
Hblegg
16

No lo veo aquí, así que me gustaría agregar que en Debian / Ubuntu es posible que deba habilitar la extensión después de instalar el paquete relativo. Entonces:

sudo apt-get install php-zip
sudo phpenmod zip
sudo service apache2 restart
lorenzo-s
fuente
2
Instalar php7.0-zippara PHP 7.
AnthonyB
¡NO OLVIDES EL REINICIO DE APACHE!
zzapper
1
Instale php7.1-zip para PHP 7.1, php7.2-zip para PHP 7.2.
Neo
6

Si tiene WHM disponible, es más fácil.

Inicie sesión en WHM .

Vaya a EasyApache 4 (o cualquier versión que tenga) en la pestaña Software .

En Paquetes actualmente instalados, haga clic en Personalizar .

Vaya a Extensiones PHP , en el tipo de búsqueda " zip " ( sin comillas ),

deberías ver 3 módulos

verifíquelos todos

Haga clic en el botón azul varias veces para finalizar el proceso.

Esto funcionó para mí. Afortunadamente tengo WHM disponible.

temo
fuente
5

Esto funcionó

apt-get install php7.0-zip

y no es necesario reiniciar php7.0-fpmmanualmente.

Desempacando php7.0-zip( 7.0.16-4+deb.sury.org~trusty+1) ...
Procesando desencadenantes para php7.0-fpm( 7.0.11-1+deb.sury.org~trusty+1) ...
php7.0-fpmdetener / esperar
php7.0-fpminicio / ejecución, proceso 1572
php7.0-fpmdetener / esperar
php7.0-fpminicio / ejecución, proceso 1777
Configuración php7.0-zip( 7.0.16-4+deb.sury.org~trusty+1) ...
configuración regional: No se puede establecer la LC_ALLconfiguración regional predeterminada: no existe ese archivo o directorio

Creación de un archivo de configuración /etc/php/7.0/mods-available/zip.inicon una nueva versión
Procesando disparadores para php7.0-fpm( 7.0.11-1+deb.sury.org~trusty+1) ...
php7.0-fpmdetener / esperar
php7.0-fpminicio / ejecución, proceso 2354
php7.0-fpmdetener / esperar
php7.0-fpminicio / ejecución, proceso 2397

prosti
fuente
4

También necesita compilar PHP con soporte zip. El manual dice lo siguiente:

Para utilizar estas funciones, debe compilar PHP con soporte zip utilizando la opción de configuración --enable-zip.

No es suficiente simplemente instalar las extensiones correctas en el servidor. Eche un vistazo al enlace de instrucciones de instalación que Pekka publicó anteriormente. Mi respuesta es solo una aclaración suya.

Jeremy
fuente
sí, pero donde debería ejecutar estos comandos en el servidor de modo que si se ejecuta PHP con soporte zip
Parag Chaure
¿Es un servidor que controlas? Si es así, creo que es parte del comando make al instalar PHP. Si no es un servidor que controlas, entonces la única opción para ti es intentar que el administrador del sistema lo haga. Lo siento, no puedo ser más preciso: nunca he instalado PHP desde cero en un servidor Linux.
Jeremy
4

Tuve el mismo problema con CentOS y el servidor instalado cPanel . Instalé el paquete zipArchive a través de cPanel y no funcionó como se esperaba. Después de probar con tantas correcciones sugeridas en todas partes, solo lo siguiente funcionó para mí.

Primero encuentre el nombre del paquete correcto con el siguiente comando

yum search zip |grep -i php

Luego usa el siguiente código.

yum install your_zip_package_name_with_php_version

En mi caso, el código correcto para instalar zipArchive era

yum install php-pecl-zip.x86_64

Tuve la solución desde este enlace. ¿Cómo puedo instalar zipArchive en PHP 7.2 con CentOS 7?

Y esta instalación de alguna manera habilitó ese paquete también y también reinició los servicios efectivos y después de que se completó la ejecución del código anterior, el problema zipArchive desapareció.

antonD
fuente
4

Centos 6

yum install php-pecl-zip

service httpd restart
zzapper
fuente
1
Gracias. He instalado php-pecl-zip, pero sin reiniciar httpd. Finalmente encontré tu respuesta!
Ngoc Nam
3

PHP 5.2.0 y posterior

Sistemas Linux

Para utilizar estas funciones, debe compilar PHP con soporte zip utilizando la opción de configuración --enable-zip.

Ventanas

Los usuarios de Windows deben habilitar php_zip.dll dentro de php.ini para poder usar estas funciones.

Vineesh Kalarickal
fuente
3

Enfrenté este problema en GCP al implementar WordPress en el entorno estándar de App Engine. Esto lo resolvió:

sudo apt-get install php7.2-zip
Omar Shabab
fuente
3

Para PHP 7.x

sudo apt-get install php-zip

Para PHP 5.x

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

Y luego reinicie el servidor Apache

sudo service apache2 restart
Santo Boldižar
fuente
1

Para Centos 7 y PHP 7.3 en Remi

Busque la extensión zip:

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

El nombre de la extensión es php73-php-pecl-zip.x86_64 . Para instalarlo en el servidor que ejecuta una versión única de PHP, elimine el prefijo 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

Reiniciar PHP:

$ sudo systemctl restart php-fpm

Verifique las extensiones PHP instaladas:

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

Para uso del servidor basado en CentOS

yum install php-pecl-zip.x86_64

Habilítelo ejecutando: echo "extension=zip.so" >> /etc/php.d/zip.ini

Wolfack
fuente
0

Tuve el mismo problema y se resolvió usando dos líneas de comando:

sudo apt install php-zip

luego reinicie su servidor web, para Apache

sudo service apache2 restart

AboElnouR
fuente
0

Intenta escribir en \ZIPARCHIVElugar de ZIPARCHIVE.

URL87
fuente
0

Necesitas verificar la versión de PHP

Si la versión php es 5.6, entonces necesita instalar php5.7-zip

sudo apt-get install php5.6-zip

y entonces

sudo service apache2 restart

Espero eso ayude

Sundar
fuente
-13

1) Debe requiresu archivo con ZipArchivearchivo.

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

2) O use el __autoloadmétodo de clase. En PHP 5 es un gran método __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
fuente
¿Cómo debo incluir o requerir el archivo ZipArchive?
Parag Chaure