从文件夹中删除文件

时间:2014-11-10 19:24:16

标签: php unlink delete-file

我不太清楚问题出在哪里。 但代码不会取消链接文件:(

 <?php include_once("sessions.php");
require_once("connect.php");
if(isset($_POST['delete'])){

$album_id = $_SESSION['album_id'];

$checkbox = $_POST['photo_checkbox'];
$count = count($checkbox);

for($i = 0; $i < $count; $i++) {
    $id = (int) $checkbox[$i]; // Parse your value to integer

    if ($id > 0) { // and check if it's bigger then 0

        $query = "SELECT * FROM media WHERE id = $id";
        $result = mysqli_query($connection, $query);
            while($row = mysqli_fetch_array($result)){

            $file = $row['path'];

                if(!unlink($file)){
                    $_SESSION["edit_message"] = "<br>Something went wrong while deleting shit ... please try your editing again." .$file;
                    header ("Location: ../fotos.php?album=".$album_id."");
                    exit;
                }

            }
        $query = "DELETE FROM media WHERE id = $id";
        $result = mysqli_query($connection, $query);
    }
}   

    if($result){
        $_SESSION["edit_message"] = "<br>Successfully deleted !";
        header ("Location: ../fotos.php?album=".$album_id."");
        exit;}
}

?>

如果我取出unlink循环部分并直接从db中删除它可以正常工作。 我错过了什么? 可能是阻碍代码执行的权限吗?

编辑: 现在将文件的权限更改为0777。所以它应该真的有用...... 但似乎仍然没有。 ! :/ 我现在没有想法。 也许循环不能正常工作?

Thanx求助

干杯

克里斯

2 个答案:

答案 0 :(得分:1)

$file2 = chmod($file, 0777);

if(!unlink($file2)){

$ file2获取chmod的返回值,这是一个bool。然后,您尝试取消链接true / false值。也许你打算取消链接($ file)?

修改以反映您的更改:

如果$ file不是完全限定的路径名​​,$ file将相对于运行脚本的当前工作目录。确保$ file是完整路径名。

答案 1 :(得分:1)

对文件的写权限是不够的,您需要对目录本身的写权限才能删除其中的文件。

您应首先检查该文件是否存在,然后您应该检查您对该文件的目录是否具有正确的权限。

if(file_exists($file) && is_writeable(dirname($file))){
unlink($file);
}else{
//invalid path or permission problems
}