2016-08-09 2 views
3

Je voudrais extraire le fichier .tar.gz dans le dossier particulier. J'ai utilisé cURL pour télécharger le fichier .tar.gz à partir de l'opération par lots MailChimp. J'ai utilisé le code ci-dessous pour extraire le fichier tar.La méthode PharData extractTo n'a pas réussi à extraire .tar.gz sur l'environnement Linux

$phar = new \PharData('upload/test.tar.gz'); 
    $phar->extractTo('upload/',null, true); 

Il fonctionne sur environnement Windows. Mais sur Linux (Ubuntu), j'ai eu une erreur ci-dessous quand exécuter au-dessus du code.

Uncaught exception 'PharException' with message 'Extraction from phar "upload/test.tar" failed: Cannot extract ".", internal error' 

J'ai déjà défini l'autorisation d'utilisateur et de groupe apache par défaut pour le dossier de téléchargement.

sudo chown -R www-data:www-data upload/ 

PHP Version: 5.6.24

J'ai échantillon joindre le fichier tar.gz: http://www.simbanic.com/_projects/test/05c902076e.tar.gz

+1

Je vais avoir exactement le même problème: essayer d'extraire le fichier tar.gz retourné de l'API MailChimp 3.0 opération discontinue. Avez-vous déjà trouvé une solution? – Stace

Répondre

3

J'ai eu le même problème avec l'archive de réponse par lots MailChimp. solution stupide, mais il fonctionne ...

$p = new PharData($tarGzArchive, RecursiveDirectoryIterator::SKIP_DOTS); 
$p->convertToData(Phar::ZIP); 

$zip = new ZipArchive; 
$res = $zip->open($createdZipArchive); 
if ($res === TRUE) { 
    $zip->extractTo($destinationPath); 
    $zip->close(); 
} 
+0

Fonctionne parfaitement! Avec une étape supplémentaire: Décompressez d'abord tar.gz puis suivez les étapes mentionnées dans cette solution. –

+0

Cela fonctionne parfaitement. Merci ... Vous êtes Elvis! –

+0

Cela fonctionne parfaitement pour moi! Je vous remercie! –