ZipArchive::open
PHP Manual
PHP Manual»ZipArchive»ZipArchive::open

ZipArchive::open

(PHP 5 >= 5.2.0, PHP 7, PHP 8, PECL zip >= 1.1.0)

ZipArchive::open — Abrir un fichero de archivo en formato ZIP

Descripción

public function ZipArchive::open(string $filename, int $flags = 0): bool|int

Abre un archivo zip nuevo o existente para leer, escribir o modificar.

Desde libzip 1.6.0, un archivo vacío ya no es un archivo válido.

Nota:

Al crear un nuevo archivo con ZipArchive::CREATE, el fichero no se escribe realmente en el disco hasta que se llama a ZipArchive::close(). Por lo tanto, los errores relacionados con el sistema de ficheros (como un permiso denegado o un directorio padre inexistente) solo se reportarán al llamar a ZipArchive::close(), y no al llamar a este método.

Parámetros

filename

El nombre del fichero del archivo ZIP para ser abierto.

flags

El modo a utilizar para abrir el archivo.

Valores devueltos

Devuelve true en caso de éxito, false o uno de los siguientes códigos de error en caso de error:

ZipArchive::ER_EXISTS

El fichero ya existe.

ZipArchive::ER_INCONS

Archivo zip inconsistente.

ZipArchive::ER_INVAL

Argumento no válido.

ZipArchive::ER_MEMORY

Falló malloc.

ZipArchive::ER_NOENT

No existe el fichero.

ZipArchive::ER_NOZIP

No es un archivo zip.

ZipArchive::ER_OPEN

No se puede abrir el fichero.

ZipArchive::ER_READ

Error de lectura.

ZipArchive::ER_SEEK

Error de búsqueda.

Ejemplos

Ejemplo #1 Abrir y extraer

<?php
$zip = new ZipArchive;
$res = $zip->open('test.zip');
if ($res === TRUE) {
    echo 'ok';
    $zip->extractTo('test');
    $zip->close();
} else {
    echo 'falló, código:' . $res;
}
?>

Ejemplo #2 Crear un fichero

<?php
$zip = new ZipArchive;
$res = $zip->open('test.zip', ZipArchive::CREATE);
if ($res === TRUE) {
    $zip->addFromString('test.txt', 'el contenido del fichero va aquí');
    $zip->addFile('data.txt', 'entryname.txt');
    $zip->close();
    echo 'ok';
} else {
    echo 'falló';
}
?>

Ejemplo #3 Crear un fichero temporal

<?php
$name = tempnam(sys_get_temp_dir(), "FOO");
$zip = new ZipArchive;
$res = $zip->open($name, ZipArchive::OVERWRITE); /* truncate as empty file is not valid */
if ($res === TRUE) {
    $zip->addFile('data.txt', 'entryname.txt');
    $zip->close();
    echo 'ok';
} else {
    echo 'failed';
}
?>
To Top