PHP Zip创建类ZipArchive未找到错误

时间:2011-03-12 00:46:44

标签: php zip zlib

我正在尝试根据我发现的here创建一个zip脚本,但我似乎遇到致命错误:在新的ZipArchive()上找不到类'ZipArchive'错误;功能

研究这似乎通常是由于编译PHP的方式。我有一个共享主机帐户,所以我没有配置任何这些东西......我认为我不能对构建进行任何更改。出于兴趣,我看了一下我的phpinfo(),我找到了一些看似相关的东西:

PHP Version 5.2.6

BZip2 Support   Enabled    <--maybe not so relevant
ZLib Support    enabled
Stream Wrapper support  compress.zlib://
Stream Filter support   zlib.inflate, zlib.deflate
Compiled Version    1.1.4
Linked Version  1.1.4 

我不确定这是否意味着我有能力创建拉链。 有关进一步的信息(虽然我不认为它是重温的)这里是我的脚本到目前为止....这是未经考验的介意你,因为我不能得到这个类未找到错误。

$file = tempnam("tmp", "zip");
$zip = new ZipArchive();
$zip->open($file, ZipArchive::OVERWRITE);


   //the string "file1" is the name we're assigning the file in the archive
$zip->addFile('show1.jpg', 'file1.jpg');
$zip->addFile('show2.jpg', 'file2.jpg');
$zip->addFile('show3.jpg', 'file3.jpg');
$zip->addFile('show4.jpg', 'file4.jpg');
$zip->addFile('show5.jpg', 'file5.jpg');
$zip->addFile('show6.jpg', 'file6.jpg');

// echo $zip->file(); //this sends the compressed archive to the output buffer instead of writing it to a file.

$zip->close();
header('Content-Type: application/zip');
header('Content-Length: ' . filesize($file));
header('Content-Disposition: attachment; filename="' . $file.'"');
readfile($file);
unlink($file); 

所以我的问题确实是:

  1. 我在脚本中做了什么导致此错误?
  2. 我的phpinfo()中的任何内容是否意味着我应该能够创建zip文件,如果我不应该在那里寻找什么,如果我有能力会让我知道。
  3. 看起来这个ZLib是一些软库,但是我不知道它是不是我想做它,甚至不知道如何使用它......这有点像预感,但是如果它可以帮助我创建zip文件,任何人都可以指出我如何使用它的正确方向?
  4. 提前致谢。 丹

4 个答案:

答案 0 :(得分:3)

默认情况下,ZipArchive显然没有编译成PHP。您需要使用'--with-zip ='选项重新编译它,或者只需通过PECL安装它。

以下是解释不同方法的手册页:

http://www.php.net/manual/en/zip.installation.php

答案 1 :(得分:1)

虽然zlib是一个重要的压缩库,但听起来你错过了the zip extension itself。看起来您从phpinfo获取了您的信息 - 查找确切的字词“zip extension”。如果找不到它们,则表示没有安装它们,因此无法使用它提供的功能和方法。

答案 2 :(得分:0)

您可以尝试dl("zip.so");作为最后的手段。但是这个扩展很少被构建为外部模块。您可以在某个地方找到它可下载,甚至可以从PHP源代码手动编译,或pecl build使用{{1}}

否则你将不得不寻找替代方案。想到http://pecl.php.net/package/zip

答案 3 :(得分:0)

如果您有升级php版本或zip extension不存在

所以你必须安装它。

1)打开终端

2)sudo apt-get install php7.0-zip

3)sudo service apache2 restart