PHP Zip()函数无法在Windows服务器上运行

时间:2014-11-03 20:14:35

标签: php windows zip zlib

我试图让基本的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:没有值

1 个答案:

答案 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';
}

希望有助于:)