2014-11-03 25 views
2

我正在尝试使基本的PHP zip函数在windows服务器上工作,但没有成功。
即使下面从PHP.net ZIP存档部分最简单的例子是不工作:PHP Zip()函数在Windows服务器上不起作用

<?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不存在,它会回应'失败',但是如果它确实存在,它会回应我'像魅力一样工作',无论要添加的文件(新文件)是否存在。 但最糟糕的是它不会创建zip!

我不认为它是权限相关的,因为我可以使用fwrite和其他文件功能成功。

现在我在php info页面的配置命令部分没有看到任何提及的zip构建('--with-zip =/hsphere/etc),所以我不能100%确定扩展是否在有正确的,但这里是一些更详细的信息关phpinfo()函数:

服务器:的Windows Server 2008 R2标准版Service Pack 1
PHP:版本5.4.14
邮编:是启用和版本是1.11.0
zlib.output_compression:关闭
zlib.output_compression_level: -1
zlib.output_handler:没有价值

回答

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

希望帮助:)

+0

这工作!非常感谢。 虽然PHP.net没有提到它作为示例中的要求,但它们给出的有趣之处在于: http://us2.php.net/manual/en/ziparchive.addfile.php 并且它也没有必要出于某种原因,我只在Windows服务器上测试过的Linux服务器上。但再次感谢它现在的作品。 – 2014-11-03 22:49:08

相关问题