Ver Mensaje Individual
  #3 (permalink)  
Antiguo 04/08/2015, 10:35
bruga
 
Fecha de Ingreso: abril-2015
Ubicación: Barcelona
Mensajes: 28
Antigüedad: 9 años, 1 mes
Puntos: 2
Respuesta: Creo un zip, pero se descarga corrupto

Cita:
Iniciado por pateketrueke Ver Mensaje
¿Ese es el código completo?

Porque es posible que exista un salto de linea o espacio antes del primer <?php que no muestras, o bien, necesitas usar exit al terminar de usar readfile().
El código completo sería este:

Código PHP:
<?php
// Nombre de la ruta del cual queremos hacer el backup
$rootPath realpath('/home/XXXX/public_html');

// Creamos una variable de tipo Zip
$zip = new ZipArchive();

//Guardamos dentro de una variable la fecha y la hora actual
$date date("d-m-Y H:i:s");

//Abrimos el archivo Zip para añadir el contenido
$zip->open($date ".zip"ZipArchive::CREATE ZipArchive::OVERWRITE);

//Navegamos por los directorios recursivamente y añadimos las carpetas y los archivos al zip creado
$files = new RecursiveIteratorIterator(
    new 
RecursiveDirectoryIterator($rootPath),
    
RecursiveIteratorIterator::LEAVES_ONLY
);
foreach (
$files as $name => $file)
{
    if (!
$file->isDir())
    {
        
$filePath $file->getRealPath();
        
$relativePath substr($filePathstrlen($rootPath) + 1);
        
$zip->addFile($filePath$relativePath);
    }
}

// Finalizamos de crear el archivo zip
$zip->close();

// Definimos el nombre de archivo a descargar.
$filename $date ".zip";

// Descargamos el archivo creado
if (file_exists($file)) {
    
header('Content-Description: File Transfer');
    
header('Content-Type: application/octet-stream');
    
header('Content-Disposition: attachment; filename='.basename($filename));
    
header('Expires: 0');
    
header('Cache-Control: must-revalidate');
    
header('Pragma: public');
    
header('Content-Length: ' filesize($filename));
    
readfile($filename);
}

//Movemos el archivo a la nueva ubicacion
rename ($rootPath "/" $date ".zip","/home/XXXX/Copias" "/" $date ".zip");
Lo he probado en mi servidor de produccion y lo hace perfectamente (es solo una pagina de html con una cuenta atras, con las librerias de javascript y los css). Con este no tengo problemas, pero cuando lo paso a un servidor con una pagina de wordpress, me da error al descomprimir el archivo que se descarga automaticamente, pero si descargo el archivo creado via FTP, no me da el error.