我正在尝试压缩目录中的文件,但不断收到以下错误:
警告: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()
已经返回了一个数组,我不知道你为什么要用另一个数组来包装它,但这是你的问题。