невозможно отменить связь файла в php
На веб-сайте я пытаюсь реализовать утилиту, которая удаляет выбранные изображения из определенной папки, используя HTML-форму с флажком и php-файл, который должен фактически удалить выбранные изображения. Форма работает и значения флажка разбираются на$_POST['images']
, php-код, чтобы сделать все остальное:
$dir=__ROOT__."/images/".$_POST['page'];
echo "dir=".$dir."<br>";
$files=array();
$fdir=opendir($dir);
while ($i = readdir($fdir)) {
//detect images and put them into files()
if (strpos(strtolower($i),".jpg")==true&&strpos(strtolower($i),".thumb")==false) $files[]=$i;
}
closedir($fdir);
for($a=0;$a<sizeof($files);$a++) {
if(in_array($files[$a],$_POST['images'])) {
$file="../images/".$_POST['page']."/".$files[$a];
echo $file."<br>";
echo('<img src="'.$file.'.thumb"><br>');
if(unlink("../images/".$_POST['page']."/".$files[$a])) {
echo ("deleted: ".$files[$a]."<br>");}
else {echo ("deletion of ".$files[$a]." failed<br>");}
if(unlink("../images/".$_POST['page']."/".$files[$a].".thumb")) echo "deleted: ".$files[$a].".thumb";
}
}
При попытке удалить, например, IMG_001.jpg (и миниатюру IMG_001.jpg.thumb), я получаю следующий эхо-вывод:
dir={absolute path of the file}
../images/keramiek/IMG_001.jpg
{the correct thumbnail}
deletion of IMG_001.jpg fialed
Что не так? Почему неunlink()
удалить файл? Я пытался с разрешениями, установленными на 777, но все равно не удалось ...
РЕШЕНИЕ:
После изменения разрешений для папки, содержащей изображения, удаление работает как надо. Владелец был изменен на www-data, а права доступа установлены на 755.
Недавно загруженные изображения (через FTP) также можно удалять.