2012-06-03 16 views
8

Estoy intentando descargar un archivo zip utilizando curl de un host virtual a otro, en un mismo servidor. El archivo zip contiene archivos * .php y * .jpg.Imagen corrupta al extraer de zip

El problema es: veces archivos JPG corruptos obtener, así:

jpg file

Aquí está mi código:

$out = fopen(ABSPATH.'/templates/default.zip','w+'); 
$ch = curl_init(); 
curl_setopt($ch, CURLOPT_FILE, $out); 
curl_setopt($ch, CURLOPT_HEADER, 0); 
curl_setopt($ch, CURLOPT_URL, 'http://share.example.com/templates/default.zip'); 
curl_exec($ch); 
curl_close($ch); 


$zip = new ZipArchive; 
if ($zip->open(ABSPATH.'/templates/default.zip') === TRUE) 
{ 
    if($zip->extractTo(ABSPATH.'/templates')) 
    { 
     echo 'OK'; 
    } 

    $zip->close(); 
} 

//$zip->close(); 

No entiendo lo que sucede a mi jpg . También intenté usar pclzip.lib.php, pero no tuve suerte. Cómo resolver este problema ?

Gracias de antemano

+2

Tratando de descartar lo obvio: si descarga y descomprime el archivo normalmente (es decir, manualmente, sin PHP), ¿funciona? –

+0

Sí, es su trabajo. Archivo cargado en el servidor utilizando el modo binario de FTP (también he probado el modo ascii), gracias. –

+1

No soy un experto en esta área, pero sé que los archivos zip pueden tener diferentes algoritmos. Tal vez hay un problema de compatibilidad? –

Respuesta

1

Finalmente encontré cuál es el problema.

estoy usando el servidor web Nginx, cuando cambio los archivos de configuración nginx:

sendfile on; 

convirtió

sendfile off; 

Mi imagen no corrupta más. Entonces no es un problema de php o curl. Artículo interesante: http://technosophos.com/node/172

1

¿Has probado a descargar el archivo a través de rizo y descomprimir normalmente (es decir, sin PHP)? Para averiguar si la descarga causa el problema o descomprimir.

También puede intentar reemplazar una de las dos partes utilizando shell_exec (wget en lugar de curl, descomprimir en lugar de ZipArchive). Me refiero solo a la depuración, no a la producción, tal vez.

Cuestiones relacionadas