在过去的一小时里,我一直在搜索,添加和失败如何解压缩文件。 我正在使用php定期下载拉链。我需要将zip的内容解压缩到一个名为zips的文件夹,并不重要(只是不同的目录)。我正在使用无限空间和带宽的共享主机,如果这有任何区别。
我下载的拉链是1个拉链,里面有5个拉链,在这5个拉链的每个拉链中都有1个csv。我需要读取每个csv并将信息存储到数据库中,我已经有了代码,但我无法打开任何zip文件。
我尝试过以下代码,而且我对其中任何一个都没有运气。 我也试过php.net上的解压缩功能,也没有运气。
任何建议?
$local_file = '_08222012_213000.zip';
$zip = zip_open($local_file);
if (is_resource($zip)) {
while ($zip_entry = zip_read($zip)) {
$fp = fopen(zip_entry_name($zip_entry), "w");
if (zip_entry_open($zip, $zip_entry, "r")) {
$buf = zip_entry_read($zip_entry, zip_entry_filesize($zip_entry));
fwrite($fp,"$buf");
zip_entry_close($zip_entry);
fclose($fp);
}
}
zip_close($zip);
}
这个也不起作用:
$zip = new ZipArchive;
$res = $zip->open($local_file);
if ($res === TRUE) {
$zip->extractTo('zips/');
$zip->close();
echo 'ok';
} else {
echo 'failed';
}
}
编辑:如果其他人在将来遇到问题,我可以使用此代码。
//Change directory
chdir("zips/");
exec("unzip ./$local_file");
答案 0 :(得分:1)
您的PHP安装上似乎没有安装zip支持。如果您正在使用Windows,PHP应该附带DLL(我记得),您应该在PHP.ini文件中通过查找与其对应的extensions =行来启用它。
如果您使用的是Linux,则可以通过软件包管理器安装该扩展程序,具体取决于您的发行版。或者通过做:
sudo pecl install zip
有关如何安装的详情,请参阅http://www.php.net/manual/en/zip.installation.php。
我的另一个建议是确保文件的权限使得PHP进程(通常作为Web服务器进程运行)可以访问该文件。还要确保网络服务器可以访问该路径,I.E。在public_html目录中(它被认为是共享主机的最佳实践,以将PHP chroot到webroot目录)。