【问题标题】:Unable to open zip with ZipArchive无法使用 ZipArchive 打开 zip
【发布时间】:2020-03-27 12:44:10
【问题描述】:

我正在运行一个 php 脚本(如 bash)。 此脚本执行此操作:

  • 从 FTP 服务器下载 zip 文件

ftp_get($ftp, $myFile.zip, $file, FTP_BINARY);

下载文件后,我想提取其内容:

   $zip = new ZipArchive;
    $res = $zip->open($myFile);

    if ($res === TRUE) {
        $zip->extractTo($extractDir);
        $zip->close();

    } else {
        dump( 'error, code:' . $res);
        die;
    }

但是,我收到错误 19:“不是 zip 存档” 如果我打开 .zip,它是一个压缩存档,因为我有 PK 密钥...

有没有人有解决方案或想法?

问候

【问题讨论】:

  • 这个变量 $myFile 对你来说是什么?您需要发送此文件的路径而不是二进制文件。
  • 文件是否使用密码加密?
  • $myFile 是文件的路径,比如 D:/myFile.zip 文件没有加密.. :)
  • 在您的代码中看起来一切正常...您可以自己创建一个 zip 文件,然后在此代码中尝试。如果您在从 sFTP 下载后立即运行此代码,则可能会导致文件锁定,因为文件正在由 php 和 os 创建。您可以尝试在代码中编写 sleep(10)。但是在代码中使用 sleep 并不是一个好主意,因为它会影响性能。
  • 问题已解决。文件已损坏...服务器的硬盘已满,创建的 .zip 已损坏。感谢您的帮助

标签: php ziparchive


【解决方案1】:

解决方案

我正在使用此代码,它工作正常。

$zip = new ZipArchive;
$myfileDir = './abc.zip';
$extractDir = './';

$res = $zip->open($myfileDir);

if ($res === TRUE) {
  $zip->extractTo($extractDir);
  $zip->close();

  echo 'Successfully extract the file';
} else {
  echo ('error, code:' . $res);
  die;
}

问题

我相信问题是因为 zip 文件,将 zip 文件夹上传到谷歌驱动器,让我们在本地下载和测试?

【讨论】:

    猜你喜欢
    • 2019-07-27
    • 2016-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多