filepath — проблемы PHP с функцией scandir

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 )

Спасибо за внимание.

0

Решение

На самом деле, если вы запустите свой код, вы всегда отсоедините только индекс 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;
}
}
?>

Надеюсь это поможет.

1

Другие решения

Файл находится в images папку, но вы не добавите это в unlink() параметр функции.

Так что попробуйте это вместо

unlink($dir . '/' . $arraydir[2]);
3

Когда вы впервые попытались удалить файл 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

0
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector