Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP Zip()函数在Windows server上不起作用_Php_Windows_Zip_Zlib - Fatal编程技术网

PHP Zip()函数在Windows server上不起作用

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 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.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服务器上。但再次感谢,它现在起作用了。