2016-08-09 64 views
3

我想將.tar.gz文件解壓縮到特定文件夾中。我使用cURL從MailChimp批量操作下載.tar.gz文件。我用下面的代碼來提取tar文件。PharData extractTo方法無法在Linux環境下提取.tar.gz

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

它正在研究Windows環境。但在Linux(Ubuntu)上,當運行上面的代碼時,出現了錯誤。

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

我已經設置了上傳文件夾的默認apache用戶和組權限。

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

PHP版本:5.6.24

我附上樣品.tar.gz文件:http://www.simbanic.com/_projects/test/05c902076e.tar.gz

+1

我有完全相同的問題:試圖提取.tar.gz文件從MailChimp API 3.0批量操作返回。你有沒有找到解決方案? – Stace

回答

3

我曾與MailChimp批量應答存檔同樣的問題。 愚蠢的解決方案,但它的工作原理...

$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

完美的作品!再一步是:首先解壓縮tar.gz,然後按照本解決方案中提到的步驟操作。 –

+0

它完美的工作。謝謝你,你是貓王! –

+0

它適合我!謝謝! –

相關問題