我正在尝试根据我发现的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);
所以我的问题确实是:
提前致谢。 丹
答案 0 :(得分:3)
默认情况下,ZipArchive显然没有编译成PHP。您需要使用'--with-zip ='选项重新编译它,或者只需通过PECL安装它。
以下是解释不同方法的手册页:
答案 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