【问题标题】:PharData extractTo method failed to extract .tar.gz on linux environmentPharData extractTo 方法无法在 linux 环境中提取 .tar.gz
【发布时间】:2016-12-15 02:21:32
【问题描述】:

我想将 .tar.gz 文件提取到特定文件夹中。我使用 cURL 从 MailChimp 批处理操作中下载 .tar.gz 文件。我已经使用下面的代码来提取 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

【问题讨论】:

  • 我遇到了完全相同的问题:尝试提取从 MailChimp API 3.0 批处理操作返回的 .tar.gz 文件。你找到解决方案了吗?

标签: php mailchimp php-5.6 phar


【解决方案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();
}

【讨论】:

  • 完美运行!还有一个步骤是:先解压tar.gz,然后按照这个解决方案中提到的步骤进行。
  • 谢谢!你拯救了我的一天 :) 我在这里添加的唯一内容是这一行: $createdZipArchive = str_replace('tar.gz', 'zip', $tarGzArchive);
猜你喜欢
  • 2013-04-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-26
  • 2021-11-30
  • 2016-08-05
  • 2013-12-30
  • 1970-01-01
相关资源
最近更新 更多