2

我有一个关于使用 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/但我仍然得到 else 条件,任何人都可以帮助我吗?

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

4

3 回答 3

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
于 2013-06-17T07:17:40.293 回答
0

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

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

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

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

于 2013-06-17T07:23:38.897 回答
0

您错误地声明了您的$zip(ziparchive)

<?php
$zip = new ZipArchive;

缺少括号

<?php
$zip = new ZipArchive();
if ($zip->open('data.zip')) {
于 2015-07-30T00:05:01.427 回答