使用PHP提取Zip目录

时间:2015-04-09 13:33:52

标签: php

有问题的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,它会按预期返回数组中的第一个文件。

3 个答案:

答案 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的值。