PharData extractTo метод не смог извлечь.tar.gz в среде Linux

Я хотел бы извлечь файл.tar.gz в определенную папку. Я использовал cURL для загрузки файла.tar.gz из пакетной операции MailChimp. Я использовал код ниже, чтобы извлечь файл tar.

$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 ответ

У меня была такая же проблема с архивом пакетных ответов 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();
}
Другие вопросы по тегам