我试图让基本的PHP zip函数在Windows服务器上运行但没有成功 即使是PHP.net上Zip Archive部分中的以下最简单的示例也无效:
<?php
$zip = new ZipArchive;
if ($zip->open('D:\rootfolder\path_to_files\test.zip') === TRUE) {
if($zip->addFile('D:\rootfolder\path_to_files\newfile.txt', 'newname2.txt')) {
echo 'worked like a charm';
} else {
echo 'Could not add the file';
}
$zip->close();
} else {
echo 'failed';
}
?>
在上面的简单示例中,如果zip文件 test.zip 不存在,它将回显“失败”,但如果确实存在,它将回显我'工作就像一个魅力'无论是否存在要添加的文件(新文件)。 但最糟糕的是,它不会创建拉链!!
我不认为它的许可是相关的,因为我可以成功使用 fwrite 和其他文件功能。
现在我没有看到任何提及在php信息页面的configure命令部分中的zip构建('--with-zip = / hsphere / etc),所以我不能100%确定扩展是否正确,但这里有一些更详细的信息关闭phpinfo():
服务器: Windows Server 2008 R2标准版Service Pack 1
PHP:版本5.4.14
Zip:已启用,版本为1.11.0
zlib.output_compression:关闭
zlib.output_compression_level: -1
zlib.output_handler:没有值
答案 0 :(得分:0)
如果要创建新的zip文件并将其添加到ne文件中,则必须设置此参数:ZipArchive::CREATE
所以你的例子如下:
$zip = new ZipArchive;
if ($zip->open('C:\xampp\htdocs\StackOverflow\test.zip', ZipArchive::CREATE) === TRUE) {
if($zip->addFile('C:\xampp\htdocs\StackOverflow\newfile.txt', 'newname2.txt')) {
echo 'worked like a charm';
}else {
echo 'Could not add the file';
}
$zip->close();
}else {
echo 'failed';
}
希望有助于:)