Удаление файла из папки

0

Я не совсем уверен, где проблема. Но код не будет развязывать файл :(

 <?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 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;}
}

?>

Если я вытащу часть цикла обратной связи и просто перейду к удалению из db, он отлично работает. Что мне не хватает? Могут ли быть разрешения, препятствующие выполнению кода?

EDIT: изменили разрешения файла на 0777 сейчас. Так что это должно действительно работать... Но все равно не похоже. ! :/У меня сейчас нет идей. Может быть, цикл работает неправильно?

Thanx для вашей помощи

ура

Крис

Теги:
delete-file
unlink

2 ответа

1
$file2 = chmod($file, 0777);

if(!unlink($file2)){

$ file2 получает возвращаемое значение chmod, которое является bool. Затем вы пытаетесь отменить значение true/false. Возможно, вы хотели отключить ($ file)?

Изменить, чтобы отразить ваши изменения:

Если $ file не является полным именем пути $ file будет относиться к текущему рабочему каталогу, из которого когда-либо запускался скрипт. Убедитесь, что $ file - полное имя пути.

  • 0
    Так должно выглядеть так: $ file = $ row ['path']; $ file = chmod ($ file, 0777); if (! unlink ($ file)) {Хммм, я запутался
1

Разрешений на запись в файл недостаточно, вам нужны права на запись в самом каталоге, чтобы иметь возможность удалять в нем файл.

Вы должны сначала проверить, существует ли файл, вы должны проверить, что у вас есть правильные разрешения в каталоге НЕ файл.

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню