使用PHP解压缩Zip存档

时间:2013-06-17 07:09:37

标签: php zip

我有一个问题关于使用PHP提取zip文件 我在网上尝试了很多共享脚本 但它仍然不起作用 我尝试的最后一个脚本是这个脚本:

<?php
$zip = new ZipArchive;
$res = $zip->open('data.zip');
if ($res === TRUE) {
  $zip->extractTo('/extract/');
  $zip->close();
  echo 'woot!';
} else {
  echo 'doh!';
}
?>

脚本运行时我总是得到else条件, 我已尝试将data.zip/extract/路径替换为完整路径http://localhost/basedata/data.ziphttp://localhost/basedata/extract/,但我还有其他条件,任何人都可以帮助我吗?

这是我的整个脚本和zip文件 http://www.mediafire.com/?c49c3xdxjlm58ey

3 个答案:

答案 0 :(得分:1)

您应该检查哪个错误代码打开(http://www.php.net/manual/en/ziparchive.open.php),这会给您一些帮助。

错误代码是这样的:

    ZIPARCHIVE::ER_EXISTS -10
    ZIPARCHIVE::ER_INCONS - 21
    ZIPARCHIVE::ER_INVAL - 18
    ZIPARCHIVE::ER_MEMORY - 14
    ZIPARCHIVE::ER_NOENT - 9
    ZIPARCHIVE::ER_NOZIP - 19
    ZIPARCHIVE::ER_OPEN - 11
    ZIPARCHIVE::ER_READ - 5
    ZIPARCHIVE::ER_SEEK - 4

答案 1 :(得分:0)

ZipArchive使用文件路径,而不是URL。

例如,如果您的Web服务器的文档根目录是/srv/www,请指定/srv/www/basedata/data.zip(或文件在服务器的本地文件系统上的任何位置), not {{1 }}

如果.ZIP文件位于远程计算机上,请在解压缩之前将脚本更改为先下载,但这似乎不是您的情况。

此外,PHP脚本作为运行的用户需要具有Zip文件的读取权限以及对提取文件的目标的写入权限。

答案 2 :(得分:0)

您正在声明$zip(ziparchive)错误

<?php
$zip = new ZipArchive;

缺少括号

<?php
$zip = new ZipArchive();
if ($zip->open('data.zip')) {