【发布时间】: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