2009-11-04 9 views

Répondre

2

étonnamment unzip unix juste travaillé!

exec(unzip -n -q zip-downloaded-by-cron.zip -d photos); 
+1

unzip 6.00 a des extensions zip64. Les anciennes versions ne le font pas. – jmanning2k

0

Quelques options que je connais.

Si votre PHP fonctionne sous Windows, vous pouvez utiliser l'interface COM pour DotNetZip.

$zipInput = "c:\\temp\\zip-downloaded-by-cron.zip"; 
$zip = new COM("Ionic.Zip.ZipFile"); 
$zip->Initialize($zipInput); 
$dirForExtract= "c:\\temp\\extract"; 
# optional password 
$zip->Password = "AES-Encryption-Is-Secure"; 
$zip->ExtractAll($dirForExtract); 
$zip->Dispose(); 

Pour DotNetZip, ZIP64 est utilisé automatiquement si nécessaire, lors de la lecture dans un fichier zip.

Vous pouvez également appeler l'outil de ligne de commande fourni avec DotNetZip. Cela a l'avantage de fonctionner sur Linux + Mono, en plus de Windows + .NET. L'outil est unzip.exe et vous pouvez simplement appeler (cmd) unzip.exe downloaded-zip.zip. Il va gérer automatiquement les trucs zip64. Il existe des options sur unzip.exe pour spécifier où extraire, quels fichiers extraire et ainsi de suite.

+0

Linux non mono, est-il possible d'utiliser DotNetZip unzip.exe? –

+0

Non, si vous êtes sur Linux, vous avez besoin de mono pour lancer DotNetZip. – Cheeso

0

Apparemment, le module IO::Compress::Zip de Perl prend en charge Zip64. Si vous êtes assez à l'aise pour l'installer, vous pouvez appeler un petit script Perl via shell_exec().

+0

en raison du serveur prob ne peut pas installer le module perl php. Donc, je peux appeler le script via passthru() ou cmd() j'ai besoin de gonfler le zip64 (IO :: Uncompress :: Unzip?) J'ai perl, v5.8.8 construit pour i686-linux quelqu'un connais un simple script perl je pourrais appel? –