压缩目录中的所有文件时出现问题


Trouble zipping all files in a directory?

我正在尝试压缩目录中的文件,但不断收到以下错误:

警告:ZipArchive::addFile()要求参数1是一个有效的路径,数组在C:''examplep''htdocs''tags''download.php 中给出

我的代码如下:

opendir($dir);
$listfiles = scandir($dir);
        $files = array($listfiles);
        $zipname = 'newzip.zip';
        $zip = new ZipArchive;
        $zip->open($zipname, ZipArchive::CREATE);
        foreach ($files as $file) {
          $zip->addFile($file);
        }
        $zip->close();

我要做的是打开一个目录,将所有文件添加到一个数组($listfiles)中,然后将数组中的文件添加到zip文件夹中。我可以看到文件是通过使用vardump存储在阵列中的,所以我看不出问题出在哪里(也许我走了一条完全错误的路线来实现这一点?)

任何帮助都将不胜感激!谢谢

问题是您实际上在数组中有一个数组。

http://php.net/manual/en/function.scandir.php根据文档,scandir()返回一个文件数组。

然后继续将该数组添加到另一个数组中$files=数组($listfiles);

数组的结构现在看起来像[[file,file,file]]

当您到达for循环时,它只循环一次,接收到实际上是一个数组的0索引,因此出现错误。

解决方案:删除数组($filelist);

opendir($dir);
$listfiles = scandir($dir);
$files = array($listfiles); // this is why.

scandir()已经返回了一个数组,我不知道你为什么要用另一个数组来包装它,但这是你的问题。