无法在PHP中解压缩文件

时间:2012-08-31 15:16:36

标签: php zip

在过去的一小时里,我一直在搜索,添加和失败如何解压缩文件。 我正在使用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");

1 个答案:

答案 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目录)。