有问题的zip文件已位于服务器的其他位置。使用他们所在目录的scandir并删除'。'的数组值。和' ..'我一直试图找到一种解压缩文件的方法。将它们移动到服务器上的新文件夹。我一直在使用相当常见的' -
代码 $zip = new ZipArchive;
if ($zip->open('$dir') === TRUE){
$zip->extractTo('./unzipped/');
$zip->close();
echo "done";
} else {
echo "nope";
}
每次运行它只会返回" nope"。所有文件都已包含其扩展名&该脚本具有777权限。有什么我想念的吗?
编辑 - 抱歉我应该提到$ dir的值来自以下内容:
$directory = '/home/karimo/public_html/test/Files/';
$files = scandir($directory );
unset($files[0]);
unset($files[1]);
foreach($files as $dir)
{
这可能是一个糟糕的名字选择,但它可以起作用#39;目前。如果我打印$ dir,它会按预期返回数组中的第一个文件。
答案 0 :(得分:0)
访问$ dir似乎缺少权限。如果是相对路径,则应检查是否需要正确的基目录。 在PHP中解析字符串中的变量需要双引号吗?所以你需要" $ dir"而不是' $ dir' ?
答案 1 :(得分:0)
这应该对你有用
// assuming file.zip is in the same directory as the executing script.
$file = 'file.zip';
// get the absolute path to $file
$path = pathinfo(realpath($file), PATHINFO_DIRNAME);
$zip = new ZipArchive;
$res = $zip->open($file);
if ($res === TRUE) {
// extract it to the path we determined above
$zip->extractTo($path);
$zip->close();
echo "WOOT! $file extracted to $path";
} else {
echo "Doh! I couldn't open $file";
}
答案 2 :(得分:0)
if ($zip->open('$dir') === TRUE) ...
在这一行中,您已将$dir
放在单引号中,这意味着它会在' $ dir'中查找文件。 (字面意思是,不是$dir
变量的值),这显然总会失败。您不需要在那里使用任何引号,但您需要进一步设置$dir
的值。