Удаление файлов с сервера. Unlink
Есть простая галерея картинок, с двумя кнопками - "загрузить" и "удалить", и инпут-чекбокс для выбора картинки, которую нужно удалить. Не могу разобраться, почему некорректно работает удаление-фото удаляется только из DOM, а из папки- нет. Панель разработчика выдает ошибку "unlink(upload/картинка.jpg): No such file or directory in C:......\OpenServer\domains\localhost\include\deleteFile.php"
//файл deleteFile.php
<?php
//Конструкция для массового удаления файлов
if (isset($_POST['checked'])) {
$dir = $_SERVER['DOCUMENT_ROOT'] . '/upload/';
if (chmod($dir, 0740)) {
echo "Права доступа для {$dir} изменены";
} else {
echo "Не удалось установить права для {$dir}";
}
$files = scandir($dir);
foreach ($_POST['checked'] as $check) {
if (in_array(basename($check), $files)) {
unlink($check);
}
echo 'Файл ' . (basename($check)) . ' успешно удалён<br/>';
}
} else {
echo "Ни одного файла не выбрано";
}
//js-обработчик формы
var response = document.getElementById("response");
const form = document.getElementById("form");
form.addEventListener("submit", function (e) {
e.preventDefault();
const xhr = new XMLHttpRequest();
const formData = new FormData(form);
xhr.open("post", "/include/deleteFile.php", true);
xhr.send(formData);
console.log(formData);
xhr.onload = function () {
response.textContent = this.responseText;
} document.querySelectorAll('input[type=checkbox]:checked').forEach(func);
function func(item) {
item.parentNode.parentNode.parentNode.remove();
}
});
//форма с картинкой для удаления
<?php
include $_SERVER['DOCUMENT_ROOT'] . '/include/functions.php';
$images = glob('upload/*');
?>
<form id="form">
<?php foreach ($images as $image) : ?>
<div class="col mb-4">
<div class="card h-100">
<img src="<?= $image ?>" class="card-img-top" alt="фото" />
<div class="card-body">
<h5 class="card-title"><?= cutString(pathinfo($image, PATHINFO_FILENAME)); ?></h5>
<p class="card-text">
Размер файла: <?= getSize($image) ?>
</p>
<input class="check-input" type="checkbox" name="checked[]" value="<?= $image; ?>">
<label class="check-label" for="flexCheckDefault">
Удалить
</label>
</div>
<div class="card-footer">
<small class="text-muted">
<?= "Изменялся:" . date(" Y-m-d H:i:s", filectime($image)); ?>
</small>
</div>
</div>
</div>
<?php endforeach; ?>
</form>