PHP Zip()函数在Windows server上不起作用
我试图让基本的PHP zip函数在windows服务器上运行,但没有成功。PHP Zip()函数在Windows server上不起作用,php,windows,zip,zlib,Php,Windows,Zip,Zlib,我试图让基本的PHP zip函数在windows服务器上运行,但没有成功。 甚至PHP.net上Zip存档部分的以下最简单示例也无法正常工作: <?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.t
甚至PHP.net上Zip存档部分的以下最简单示例也无法正常工作:
<?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\u压缩:关闭
zlib.output\u compression\u level:-1
zlib.output\u handler:无值如果要创建新的zip文件并向其中添加新文件,则必须设置此参数:
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';
}
希望这能有所帮助:)效果不错!谢谢。有趣的是,PHP.net在他们给出的示例中没有提到它是一项要求:而且出于某种原因,在我测试的linux服务器上,它也不是必需的,只是在Windows服务器上。但再次感谢,它现在起作用了。