Проблема с удалением каталога и файлов

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

Я получаю ошибку —

Неустранимая ошибка PHP: необработанное исключение UnexpectedValueException с
сообщение
«RecursiveDirectoryIterator :: __ конструкт (Http: //…@alink.co.uk/):
не удалось открыть каталог: не реализовано ‘в

И вот часть кода, к которой это относится:

$dir = 'http://www.thisismylink.co.uk/userfolder/' . $row['email'] . "/";
$it = new RecursiveDirectoryIterator($dir, RecursiveDirectoryIterator::SKIP_DOTS);
$files = new RecursiveIteratorIterator($it,
RecursiveIteratorIterator::CHILD_FIRST);
foreach($files as $file) {
if ($file->isDir()){
rmdir($file->getRealPath());
} else {
unlink($file->getRealPath());
}
}
rmdir($dir);

В настоящее время структура —

Электронная почта пользователя ($ dir)

  • фотографий
    • picture.png
  • видео
    • video.mp4

Что я хочу сделать, так это удалить все, что находится внутри каталога «User Email», а также самого «User Directory»

0

Решение

Похоже, вы используете полный URL-адрес в качестве верхнего каталога. Не должно ли это быть:

$dir = 'userfolder/' . $row['email'] . "/"; //Relative to your script
$it = new RecursiveDirectoryIterator($dir, RecursiveDirectoryIterator::SKIP_DOTS);
$files = new RecursiveIteratorIterator($it,
RecursiveIteratorIterator::CHILD_FIRST);
foreach($files as $file) {
if ($file->isDir()){
rmdir($file->getRealPath());
} else {
unlink($file->getRealPath());
}
}
rmdir($dir);
1

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

Это действительно довольно опасный способ справиться с проблемой; Я не пытаюсь обойти ваш фактический вопрос, однако, пожалуйста, подумайте о том, чтобы хранить базу данных, полную «каталогов» и с кем они связаны. Когда вы удаляете пользователя, установите в базе данных флаг «toBeRemoved» или что-то в этом роде.

Затем, очень часто, нужно выполнить задачу cron / запланированного и запросить список каталогов, которые нужно удалить, а затем удалить запись базы данных / пометить ее как обновленную.

Проблема заключается в том, что независимо от того, насколько вы уверены в его безопасности, сценарий можно использовать или создавать непредсказуемые результаты при вводе данных через веб / пользователя.

В случае, если эти ошибки основаны на разрешении, использование вышеупомянутого менталитета позволило бы сделать это на уровне «корневого» пользователя, не опасаясь, что системные файлы будут удалены из-за того, что ваш код будет поврежден плохим пользователем (или намеренным пользователем). попадание в неправильную комбинацию событий).

0

По вопросам рекламы [email protected]