如何使用php删除zip文件

时间:2012-01-23 07:23:30

标签: php zipfile

这是我删除zip文件的php代码:

$name = "zip_file_name";
chmod('./modules/',0777);
unlink('./modules/'.$name.'.zip');

此处modules是包含的zip文件的文件夹。当我写这段代码时,我收到了一个错误:

<div style="border:1px solid #990000;padding-left:20px;margin:0 0 10px 0;">



<h4>A PHP Error was encountered</h4>



<p>Severity: Warning</p>

<p>Message:  unlink(./modules/texts.zip) [<a href='function.unlink'>function.unlink</a>]: Permission denied</p>

<p>Filename: controllers/super_admin.php</p>

<p>Line Number: 590</p>



</div>

如果我的代码中有任何错误?

我也像这样检查chmod

chmod('./modules/'.$name.'.zip',0777);

但我在上面定义了相同的错误。

2 个答案:

答案 0 :(得分:0)

此外,您必须更改zip的权限,使其首先可写

chmod('./modules/'.$name.'.zip',0666);

666 =为所有人读/写 确保返回true。但由于您无法删除该文件,因此很可能您也无法更改其权限,因为Apache不是所有者。

只需要将新文件写入该目录,父目录只需要777,不要影响对已经存在的文件执行的操作。

答案 1 :(得分:0)

$name = "zip_file_name";
$sPath = "./modules/" . $name . ".zip";
$aFilePath = explode("/", $sPath);
$i = 0;
$sLastFolder = "";
foreach ($aFilePath as $sFolder) {
    $i++;
    if (file_exists($sLastFolder . $sFolder) || is_dir($sLastFolder . $sFolder)) {
        $this->make_writeable($sLastFolder . $sFolder);
        $iOldumask = umask(0); // important part #1
        chmod($sLastFolder . $sFolder, 0777);
        umask($iOldumask); // important part #2
        $sLastFolder .= $sFolder . "/";
    }
}
unlink($sPath);