Tengo un script PHP que debe descomprimir algunos archivos. Las subidas son carpetas para llevar, básicamente los archivos zip con una extensión personalizada.
Estoy teniendo problemas con algunos archivos zip empaquetados en una sola máquina, pero no con la misma carpeta envasados en otra máquina. En ambos casos, la compresión se realiza con la misma biblioteca de Java.
Este es el resultado esperado, que entonces PHP adicionales Procesos:
Este es el resultado dañada, lo que hace PHP estrangulador:
Si miro a sus permisos, esto es lo que veo ( 01_Orig
no está mal, 02_Modif
está dañado):
Si miro a los dos paquetes con unzip -l
(el primero está bien, el segundo es corrupto):
Y esta es mi función de PHP (que es el mismo en ambos casos):
$uploads = "uploads_dir/";
$dir = new DirectoryIterator("uploads_dir/");
foreach ($dir as $fileinfo) {
if (!$fileinfo->isDot()) {
$filename = $fileinfo->getFilename();
$zip = new ZipArchive;
$res = $zip->open($uploads . $fileinfo);
if ($res === TRUE) {
$zip->extractTo($uploads . $filename . "_extracted");
$zip->close();
} else {
echo "Unable to unzip";
}
}
}
Both uploads look fine when I manually unzip or open them with 7zip in my Windows machine.
If I create two hex dumps of both zip files and compare them, this is what I get: https://gist.github.com/msoutopico/22a9ef647381c2e4d26313f135c526e2
Thanks a lot in advance for any tips.
UPDATE:
In case it's relevant, the zip files are created (saved) in a linux server, and both machines where this is done (the one that works, and the one that corrupt the package) run Windows 10.
Ordenado. La versión 2 del complemento fue ajustado para transformar separadores de ruta a partir \
de /
nombres de archivo. Ahora, a pesar de que la versión 3 del plugin se ha instalado en ambas máquinas, en la máquina defectuosa había también una más antigua (versión 1, anterior a ese pellizco), que es la que se estaba utilizando en lugar de la versión 3. Justo retirar el duplicado versión 1 ha solucionado el problema. @pmqs tenía razón. Gracias a todos por ayudarme a resolver rápidamente este!