Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] CodeIgniter Crear ZIP en php

Estas en el tema de Crear ZIP en php en el foro de PHP en Foros del Web. Disculpen tengo un problema al generar el zip. Actualmente en el sistema que estoy desarrollando los genera y descarga sin ningún problema. El error recae ...
  #1 (permalink)  
Antiguo 25/09/2015, 12:59
 
Fecha de Ingreso: septiembre-2015
Ubicación: Colima
Mensajes: 6
Antigüedad: 8 años, 7 meses
Puntos: 0
Exclamación Crear ZIP en php

Disculpen tengo un problema al generar el zip.

Actualmente en el sistema que estoy desarrollando los genera y descarga sin ningún problema. El error recae cuando actualizo en el servidor donde se aloja la aplicación.

Descarga el archivo ZIP pero al momento de abrirlo me aparece que tiene formato desconocido o dañado; aunque con solo darle "reparar archivos" en el WinRar me genera el archivo ZIP correctamente.

Parte del código...
$zip = new ZipArchive();
$filename = './juke4.zip';
if ($zip->open($filename, ZipArchive::CREATE)!==TRUE) {
exit("cannot open <$filename>\n");
}
else{
foreach ($xmlGastos as $keyXml){
foreach ($keyXml as $keyyXml){
$aux=(string)$keyyXml->Pdf;
$zip->addFile("".$aux,$keyyXml->UUID.".pdf");
$aux=(string)$keyyXml->ArchivoXml;
$zip->addFile("".$aux,$keyyXml->UUID.".xml");
$aux=$keyyXml->UUID;
}
}
}
$zip->close();
header("Content-type: application/zip");
header("Content-Disposition: attachment; filename=archivos.zip");
header("Pragma: no-cache");
header("Expires: 0");
readfile("./juke4.zip");

Nota: anteriormente generaba el ZIP sin error alguno.
  #2 (permalink)  
Antiguo 25/09/2015, 14:01
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Crear ZIP en php

Cita:
El error recae cuando actualizo en el servidor donde se aloja la aplicación.
¿Al menos ya te has asegurado de tener exactamente la misma versión de php, así como configuración, extensiones, etc. en local como en tu hosting?

Si no, entonces ese es tu error: no es problema de código.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 25/09/2015, 15:23
 
Fecha de Ingreso: septiembre-2015
Ubicación: Colima
Mensajes: 6
Antigüedad: 8 años, 7 meses
Puntos: 0
Respuesta: Crear ZIP en php

Antes de comenzar el proyecto me asegure de instalar la misma versión de php 5.5.19 (xampp).

Anteriormente si creaba el zip con archivos que agregaba (.pdf y .xml). He estado haciendo actualizaciones debido a que la siguiente semana comienza su etapa de pruebas en el corporativo.

Le actualice para que agregar archivos .jpg (en caso de haber) y en funcionó en mi servidor local así que actualicé la versión y lo mande al servidor de producción y fue ahí cuando ya los empezó a descargar con error al abrir el archivo.

Aunque cabe decir que con solo darle reparar al ZIP ya lo abre como correctamente y con todos los archivos correspondientes. Presiento que el servidor al generar el ZIP lo hace corrupto pero no se porque.
  #4 (permalink)  
Antiguo 25/09/2015, 15:38
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Crear ZIP en php

Pues es complicado adivinar, ¿tienes control de versiones?

Así podrías regresar a ese punto en que todo funciona y ver exactamente qué cambió.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 25/09/2015, 15:54
 
Fecha de Ingreso: enero-2007
Mensajes: 285
Antigüedad: 17 años, 3 meses
Puntos: 21
Respuesta: Crear ZIP en php

solo para probar...
yo guardaria el zip en el servidor y probaria descargarlo via ftp a ver si esta bien y sin rupturas.. des esa forma descartarias que el problema sea en la generacion del zip.. y asi aputariamos todos los cañones a la descarga

como nota.. de un tiempo a esta parte he tenido muchos dolores de cabeza con las descargas.. ya sea por php, o por htaccess..
  #6 (permalink)  
Antiguo 25/09/2015, 16:24
 
Fecha de Ingreso: septiembre-2015
Ubicación: Colima
Mensajes: 6
Antigüedad: 8 años, 7 meses
Puntos: 0
De acuerdo Respuesta: Crear ZIP en php

Ya intente regresar a la versión en la que funcionaba pero seguía igual.

Seguí el consejo de marcusaurelio, me conecte vía escritorio remoto con el servidor y fui a donde se aloja el ZIP que se crea; lo abrí y estaban los archivos que solicite descargar la ultima vez y los pude abrir sin que me marcará algún error. Esto nos lleva a que cuando se solicita la descarga de archivos viene el error.

¿Será algún problema de configuración?

Nota: Cada vez que lo descargo, primero borró el ZIP para crealo nuevamente y no contenga archivos de la descarga anterior.
  #7 (permalink)  
Antiguo 25/09/2015, 16:27
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Crear ZIP en php

Cita:
Esto nos lleva a que cuando se solicita la descarga de archivos viene el error.
Puede ser, ¿y si muestras el 100% de dicho código?
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #8 (permalink)  
Antiguo 25/09/2015, 16:39
 
Fecha de Ingreso: septiembre-2015
Ubicación: Colima
Mensajes: 6
Antigüedad: 8 años, 7 meses
Puntos: 0
Respuesta: Crear ZIP en php

Esta solo es una función del controlador, faltó un poco de código pero es irrelevante (consultas) al problema.

$aux=null;
unlink('juke4.zip');
//Creando el archivo zip
$zip = new ZipArchive();
$filename = './juke4.zip';
if ($zip->open($filename, ZipArchive::CREATE)!==TRUE) {
exit("cannot open <$filename>\n");
}
else{
foreach ($result as $key ) {
foreach ($key as $keyy ) {
//Obtener los xml y pdf - CFDI
foreach ($xmlGastos as $keyXml){
foreach ($keyXml as $keyyXml){
if($keyyXml->eCodComprobante==$keyy->eCodComprobante){
if($aux==null){
$aux=(string)$keyyXml->Pdf;
$zip->addFile("".$aux,$keyyXml->UUID.".pdf");
$aux=(string)$keyyXml->ArchivoXml;
$zip->addFile("".$aux,$keyyXml->UUID.".xml");
$aux=$keyyXml->UUID;
}

elseif($aux!=$keyyXml->UUID){
$aux=(string)$keyyXml->Pdf;
$zip->addFile("".$aux,$keyyXml->UUID.".pdf");
$aux=(string)$keyyXml->ArchivoXml;
$zip->addFile("".$aux,$keyyXml->UUID.".xml");
$aux=$keyyXml->UUID;
}
}

}
}
//Obtener imagenes y pdf - no deducible
foreach ($gastos as $keyGas){
foreach ($keyGas as $keyyGas){
if($keyyGas->eCodComprobante==$keyy->eCodComprobante){
$aux=(string)$keyyGas->Imagen;
$ext=substr($aux, -3);
$zip->addFile("".$aux,$keyyGas->eCodRelacion.$keyyGas->eCodComprobante.".".$ext);
}

}
}
}
}
}
//Llave del foreach
$zip->close();
ob_end_clean();
//then send the headers to foce download the zip file
header("Content-type: application/zip");
header("Content-Disposition: attachment; filename=archivos.zip");
header("Pragma: no-cache");
header("Expires: 0");
readfile("./juke4.zip");
}//Llave del if

$result=$this->mcomprobante->getAprobados();
$data['result']=$result;
$tipoCompania=$this->mcomprobante->getCatCompanias();
$data['tipoCompania']=$tipoCompania;
$this->load->view('GMI/11/vista11',$data);
}//Llave de la funcion
  #9 (permalink)  
Antiguo 27/09/2015, 04:12
 
Fecha de Ingreso: enero-2007
Mensajes: 285
Antigüedad: 17 años, 3 meses
Puntos: 21
Respuesta: Crear ZIP en php

me la juego mas por la descarga... a mi me pasa.. es mas el mismo code... me anda en un servidro.. perfectamente.. y no en otro.. cosa de mandinga... para mi lo hacen los administradores.. de servers.. para que nuestra vida no sea perfecta.. jajajja
  #10 (permalink)  
Antiguo 29/09/2015, 08:19
 
Fecha de Ingreso: septiembre-2015
Ubicación: Colima
Mensajes: 6
Antigüedad: 8 años, 7 meses
Puntos: 0
Sonrisa Respuesta: Crear ZIP en php

Ya pude marcusaurelio. Tuve que agregar unas configuraciones en los headers y finalmente pudo descargarse sin problemas en el servidor de producción.
  #11 (permalink)  
Antiguo 29/09/2015, 09:09
 
Fecha de Ingreso: enero-2007
Mensajes: 285
Antigüedad: 17 años, 3 meses
Puntos: 21
Respuesta: Crear ZIP en php

y cuales fueron las modificaciones?
  #12 (permalink)  
Antiguo 29/09/2015, 11:02
 
Fecha de Ingreso: septiembre-2015
Ubicación: Colima
Mensajes: 6
Antigüedad: 8 años, 7 meses
Puntos: 0
Sonrisa Respuesta: Crear ZIP en php

Código del ZIP...
$zip->close();
$file = "./juke4.zip"; //Agregada para leer el tamaño del archivo.
$size = filesize($file);//Obteniendo el tamaño del archivo

header("Content-Description: File Transfer"); //Para indicar que será descarga
header("Content-type: application/zip");
header("Content-Disposition: attachment; filename=archivos.zip");
header("Content-Length: $size"); //Para indicar si el tamaño enviado es el mismo que el recibido
header('Content-Transfer-Encoding: binary'); //Baja el porcentaje de que un archivo se descargue corrupto
header("Pragma: no-cache");
header("Cache-Control: no-cache");
header("Expires: 0");
readfile("./juke4.zip");

Pues así quedaron las modificaciones.

Etiquetas: configuraciòn, configuración-php, zip
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 20:43.