php Удалить папку с содержимым


Как удалить папку с содержимым с помощью PHP

Мне нужно удалить папку с содержимым с помощью PHP. rmdir() и unlink() удалять пустые папки, но не могут удалять папки с содержимым.

Эта функция позволит вам удалить любую папку (до ее записи), а также файлы и подкаталоги.

Или без рекурсии с помощью RecursiveDirectoryIterator :

Вам нужно зацикливать содержимое папки (включая содержимое любых подпапок) и сначала удалить их.

Будьте осторожны с ним.

Здесь script, который сделает то, что вам нужно:

Я получил его с php.net, и он работает.

Вам придется удалить все файлы рекурсивно. В комментариях справочной страницы rmdir есть много примеров функций:

В PHP нет единой встроенной функции, которая позволила бы это сделать, вам нужно написать свой собственный с помощью rmdir и отменить связь.

Пример (взято из комментария php.net docs):

Вы всегда можете обманывать и делать shell_exec(«rm -rf /path/to/folder»);

Возможно, лучший подход — использовать rm (если вы находитесь под Linux). Это будет похоже на то, что ( $root ВСЕГДА должно быть установлено на TMP directory , чтобы предотвратить удаление жизненно важных файлов!):

Как удалить директорию вместе с файлами которые в ней PHP

22.11.2020, 12:10

Удалить директорию вместе с файлами
Здравствуйте! Нашел скрипт для удаления папки с файлами function removeDirectory($dir) < if.

Как удалить папки с файлами через php скрипт?
В директории Z:\home\test.local\www находится файл index.php, .htaceess и 5 папок. В одной из.

Удалить папки, вместе с внутренними файлами, которые были созданы 14 дней назад
Добрый день. Подскажите, пожалуйста, как написать скриптик. 1) Хочу удалить папки, вместе с.

Удалить из строки слова, которые встречаются в ней заданное число раз
Отредактировать данное предложение, удаляя из него слова, которые встречаются в нём заданное число.

Удалить в строке слова, которые встречаются в ней указанное число раз
здравствуйте, необходимо срочно решить следующую задачу: удалить в строке слова, которые.

Php Удалить папку с содержимым

Здесь могла бы быть ваша реклама

Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006
Откуда: Israel

Секрет
Теперь, когда вы уже наверняка второпях отправили свой запрос,
я расскажу вам простой секрет, который сэкономит вам уйму ожиданий,
даже если первый ответ по теме последуем сразу же.

Само собой я знаю что ответят мне тут же, и если я посмотрю
на сообщения на форуме, то пойму что в общем то я и не ошибаюсь.
Но еще я точно замечу, что очень мало тем, в которых всего два ответа :
вопрос автора и еще два сообщение вида Ответ + Спасибо

Илон Маск рекомендует:  Int86, int86x программное прерывание

После этого приходится начинать уточнять этим неграмотным что мне надо.
Они что, сами читать не умеют? А уточнять приходится.
И иногда пока они переварят то что я им скажу проходит и не одна ночь..

Уверен что если бы я им сказал что у меня есть
фиолетовый квадрат, и нужно превратить его в синий треугольник
и я пытался взять кисточку, макнуть в банку и поводить ей по квадрату
но почему то кисточка не принимала цвет краски в банке,
то на мой вопрос — где взять правильные банки мне бы ответили гораздо быстрее
предложив её открыть, а не тратить еще стольник на жестянку.

Поэтому с тех пор я строю свои вопросы по проверенной давным давно схеме:
Что есть
Что нужно получить
Как я пытался
Почему или что у меня не получилось.

На последок как оно происходит на форумах

Новичок: Подскажите пожалуста самый крепкий сорт дерева! Весь инет перерыл, поиском пользовался!
Старожил: Объясни, зачем тебе понадобилось дерево? Сейчас оно в строительстве практически не используется.
Новичок: Я небоскрёб собираюсь строить. Хочу узнать, из какого дерева делать перекрытия между этажами!
Старожил: Какое дерево? Ты вообще соображаешь, что говоришь?
Новичок: Чем мне нравиться этот форум — из двух ответов ниодного конкретного. Одни вопросы неподелу!
Старожил: Не нравится — тебя здесь никто не держит. Но если ты не соображаешь, что из дерева небоскрёбы не строят, то лучше бы тебе сначала школу закончить.
Новичок: Не знаите — лучше молчите! У меня дедушка в деревянном доме живёт! У НЕГО НИЧЕГО НЕ ЛОМАЕТСЯ.
Но у него дом из сосны, а я понимаю, что для небоскрёба нужно дерево прочнее! Поэтому и спрашиваю. А от вас нормального ответа недождёшся.
Прохожий: Самое крепкое дерево — дуб. Вот тебе технология вымачивания дуба в солёной воде, она придаёт дубу особую прочность:
Новичок: Спасибо, братан! То что нужно.

Отредактировано модератором: Uchkuma, 26 Апреля, 2011 — 10:21:12

Как удалить папку с PHP?

Когда я создаю категорию, я могу создать папку с изображениями, чтобы загружать туда изображения.

Теперь я хочу удалить эту папку, когда я удаляю категорию.


Код для создания папки следующий и работает хорошо.

И я придумаю следующий код. Но я не уверен, как использовать rmdir, чтобы он не удалял папку с изображениями. Я хочу удалить только дочернюю папку с изображениями.

Я не уверен, как действовать после этого.

Кто-нибудь может дать мне несколько советов, пожалуйста?

3 ответа

Возможно, для Вашего проекта будут необходимы бесплатные векторные карты. На нашем сайте представлены карты для всех стран.

Удаление директории со всем содержимым

Geenetix

Guest

Удаление директории со всем содержимым

Можно ли удалить директорию со всем содержимым ?
unlink(‘directory’);
Или как:?

Winer

Мимо проходил

можно ещё ман почитать.

Geenetix

Guest

Winer

Мимо проходил

не подходит — не используй, или сделай чтобы подходило.

Илон Маск рекомендует:  Что такое код intersectrect

вполне возможно что соответствующими параметрами к rmdir/rm(используя [m]exec[/m]) можно удалять папку со всем содержимым. Но это не есть хорошо совместимое решение.

Как удалить папку с содержимым с помощью PHP [дубликат]

этот вопрос уже есть ответ здесь:

мне нужно удалить папку с содержимым с помощью PHP. rmdir() и unlink() удалить пустые папки, но не могут удалить папки, которые имеют содержимое.

6 ответов

эта функция позволит вам удалить любую папку (если она доступна для записи), а также файлы и подкаталоги.

или без рекурсии с помощью RecursiveDirectoryIterator :

вам нужно обойти содержимое папки (включая содержимое любых вложенных папок) и сначала удалить их.

будьте осторожны с ним.

вот скрипт, который сделает именно то, что вам нужно:

Я получил его от php.net и это работает.

нет ни одной функции, встроенной в PHP, которая позволила бы это, вы должны написать свой собственный с rmdir и unlink.

пример (взят из комментария к php.net docs):

вам придется удалить все файлы рекурсивно. Есть много примеров функций в комментариях rmdir страница руководства:


вы всегда можете схитрить и сделать shell_exec(«rm -rf /path/to/folder»);

rmdir — Удаляет директорию

(PHP 4, PHP 5, PHP 7)

rmdir — Удаляет директорию

Описание

Пытается удалить директорию с именем dirname . Директория должна быть пустой и должны иметься необходимые для этого права. В случае ошибки будет сгенерирована ошибка уровня E_WARNING .

Список параметров

Путь к директории.

Замечание: Поддержка контекста была добавлена в PHP 5.0.0. Для описания контекстов смотрите раздел Потоки.

Возвращаемые значения

Возвращает TRUE в случае успешного завершения или FALSE в случае возникновения ошибки.

Список изменений

Версия Описание
5.0.0 Начиная с версии PHP 5.0.0, функция rmdir() также может быть использована с некоторыми обёртками URL. Обратитесь к Поддерживаемые протоколы и обработчики (wrappers) для получения списка обёрток, которые поддерживают rmdir() .

Примеры

Пример #1 Пример использования rmdir()

if (! is_dir ( ‘examples’ )) <
mkdir ( ‘examples’ );
>

Примечания

Замечание: Когда опция safe mode включена, PHP проверяет, имеет ли каталог, с которым вы собираетесь работать, такой же UID (владельца), как и выполняемый скрипт.

Смотрите также

  • is_dir() — Определяет, является ли имя файла директорией
  • mkdir() — Создаёт директорию
  • unlink() — Удаляет файл

Рекурсивное удаление каталога или удаление папки с файлами на PHP

PHP
При написании своей цмс столкнулся с тем что какие либо временные данные, а именно кэш модулей нужно удалять периодически, но из-за того что весь кэш у меня сортируется по папкам и подпапкам с файлами. То простыми функциями unlink и rmdir тут не обойтись. Пришлось искать варианты и лепить из них рекурсивную функцию удаления каталогов с файлами, что бы одним запросом вычищать всю папку временных файлов цмс.

Вот что у нас получилось, собственно сама функция:

При проверке на существование каталогов и файлов, перед их удалением скрипт выставляет им права 777, на тот случай если до этого были выставлены права при которых удалить файл или папку не удалось бы.

Пример удаления указанной папки со всем содержимым:

Пример удаления только содержимого указанной папки, сама папка не удаляется:

Для справки:
* $_SERVER[‘DOCUMENT_ROOT’] — корневая директория сайта.

Удалить каталог с файлами в нем?

Интересно, как проще всего удалить каталог со всеми его файлами?

я использую rmdir(PATH . ‘/’ . $value); однако, чтобы удалить папку, если в ней есть файлы, я просто не могу ее удалить.

Решение

В настоящее время доступно как минимум два варианта.


Перед удалением папки удалите все ее файлы и папки (а это означает рекурсию!). Вот пример:

И если вы используете 5.2+, вы можете использовать RecursiveIterator, чтобы сделать это без необходимости делать рекурсию самостоятельно:

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

Я обычно использую это, чтобы удалить все файлы в папке:

И тогда вы можете сделать

Какой самый простой способ удалить каталог со всеми его файлами в нем?

Короткая функция, которая делает работу:

Я использую его в классе Utils следующим образом:

С большой властью приходит большая ответственность: Когда вы вызываете эту функцию с пустым значением, она удалит файлы, начинающиеся с root ( / ). В качестве гарантии вы можете проверить, если путь пуст:

Это более короткая версия отлично работает для меня

Как видно из наиболее популярных комментариев на странице руководства PHP о rmdir() (увидеть http://php.net/manual/es/function.rmdir.php ), glob() функция не возвращает скрытые файлы. scandir() предоставляется в качестве альтернативы, которая решает эту проблему.

Алгоритм, описанный там (который работал как обаяние в моем случае):

Вы можете использовать Symfony’s Файловая система (код ):

Однако я не мог удалить некоторые сложные структуры каталогов с помощью этого метода, поэтому сначала вы должны попробовать его, чтобы убедиться, что он работает правильно.

Я мог бы удалить указанную структуру каталогов, используя конкретную реализацию Windows:

И просто для полноты, вот мой старый код:

Здесь у вас есть одна хорошая и простая рекурсия для удаления всех файлов в исходном каталоге, включая этот каталог:

Функция основана на рекурсии, выполненной для копирования каталога. Вы можете найти эту функцию здесь:
Скопируйте все содержимое одного каталога в другой, используя php

Работа с файлами и директориями в PHP

Набор PHP функций для работы с файлами и директориями, получение списка файлов в папке, безопасное сохранение файлов и т.д.

Получить имя файла из URL

Имя файла без расширения

Получить расширение файла

Размер файла

Чтобы получить размер файла применяется функция filesize($filename) , которая возвращает размер файла указанного в $filename в байтах.

Размер директории

Функция рекурсивно проходит по всем директориям и возвращает размер всех файлов в байтах.

Конвертация байтов в килобайты и мегабайты

Чтобы конвертировать байты в килобайты и мегабайты можно применить следующую функцию:

Получить список файлов директории в виде массива

То же самое делает функция scandir() , разница в том что у нее в массиве будут « . », « .. » и есть возможность сортировки.

Безопасное сохранение файла

Чтобы не затереть существующий файл на сервере можно применить данную функцию.

В функцию передаётся путь и имя файла, если на сервере уже существует такой файл, функция к концу файла приписывает префикс. Также если директория не существует, пытается её создать.

Илон Маск рекомендует:  Шаблон сайта фрукты HTML, CSS, JavaScripts, 1 страница
Понравилась статья? Поделиться с друзьями:
Кодинг, CSS и SQL