dirdel.php:
<?php
//The name of the folder.
$dir = 'images';
//Get a list of all of the file names in the folder.
$arraydir = scandir($dir, 2);
print_r($arraydir);
//Loop through the file list.
foreach ($arraydir as $key => $value) {
unlink($arraydir[2]);
}
?>
Массив выходов:
Array ( [0] => .
[1] => ..
[2] => ana.png
[3] => ban.png
[4] => ing.png
[5] => maca.png
[6] => no.png
[7] => pret.png )
Предупреждение: unlink (ana.png): нет такого файла или каталога в C: \ phpdesktop-
chrome-57.0-rc-php-7.1.3 \ www \ dirdel.php в строке 10
Чтобы исследовать ошибку, я также попробовал что-то вроде:
require 'images/';
Выход:
Предупреждение: требуется (C: \ phpdesktop-chrome-57.0-rc-php-7.1.3 \ www \ images):
не удалось открыть поток: в C: \ phpdesktop-chrome-57.0-rc- отказано в доступе
php-7.1.3 \ www \ dirdel.php в строке 2
Я хочу удалить файл «ana.png», представленный: «$ arraydir [2]» (файл находится в www / images)
Я уже искал в нескольких местах, но я не нашел ничего, что помогло бы мне решить эту проблему.
Есть ли решение для этого?
Альтернативы действительны, если они уважают структуру массивов:
Array ( [0] => .
[1] => ..
[2] => ana.png
[3] => ban.png
[4] => ing.png
[5] => maca.png
[6] => no.png
[7] => pret.png )
Спасибо за внимание.
На самом деле, если вы запустите свой код, вы всегда отсоедините только индекс 2 вашего массива. Вы должны использовать переменные и ссылки, которые вы используете в цикле foreach. Я предлагаю вам попробовать приведенный ниже код:
<?php
//The name of the folder.
$dir = 'images';
//Get a list of all of the file names in the folder.
$arraydir = scandir($dir, 2);
print_r($arraydir);
//Loop through the file list.
foreach ($arraydir as $key => $value) {
if ($arraydir[$key] == 'ana.png' && file_exists($dir . DIRECTORY_SEPARATOR . $arraydir[$key])) {
unlink($dir . DIRECTORY_SEPARATOR . $arraydir[$key]);
break;
}
}
?>
Надеюсь это поможет.
Файл находится в images
папку, но вы не добавите это в unlink()
параметр функции.
Так что попробуйте это вместо
unlink($dir . '/' . $arraydir[2]);
Когда вы впервые попытались удалить файл ana.png, используемый путь был относительно вашего текущего каталога, поэтому файл не был найден. Что привело к первой ошибке.
Чтобы решить это, вы должны либо дать абсолютный путь,
$prefix = 'C:\\phpdesktop-chrome-57.0-rc-php-7.1.3\\www\images\\';
$filename = $prefix . $arraydir[2];
unlink($filename)
или объедините имя файла с именем каталога $dir . '/' . $arraydir[2]
$dir = 'images'; /*Assuming your current directory is 'C:\phpdesktop-chrome-57.0-rc-php-7.1.3\www\'*/
unlink($dir . $arraydir[2]);
Что касается второй ошибки, похоже, у вас нет прав на запись в папку «C: \ phpdesktop-chrome-57.0-rc-php-7.1.3 \ www \ images»; Вы должны изменить файлы и права доступа к каталогу. Я бы предложил после этого руководство о настройке прав доступа к файлам в Windows 10