Loftschool школа онлайн обучения IT профессиям
Профессии
  • Веб-разработчик
  • Frontend с нуля
  • Frontend разработчик
  • Backend разработчик
  • Full Stack разработчик
  • UX/UI Дизайнер
  • Интернет-маркетолог
  • Android-разработчик
Курсы
            • Веб-тестирование
            • Основы вёрстки
            • Веб для начинающих
            • JavaScript
            • Vue.js
            • React.js
            • Node.js
            • PHP
            • UX/UI-дизайн: базовый
            • UX/UI-дизайн: PRO
            • Основы Python
            • Python: машинное обучение
            • Product Management
            • Контекстная реклама
            • SMM
            • SEO для всех
            • Android: базовый
            • Android: продвинутый

          Скидка на все

          курсы и профессии

          -46%

          ВЕСЬ

          ИЮНЬ

          До конца акции:
          24
          Дней
          08
          Часов
          47
          Минут
          • Главная
          • Блог
          • Статьи
          • Как удалить файл через PHP: функция unlink
          Полезный блог
          Сергей Ломакин
          Автор блога Loftschool
          Опубликовано 11.05.2023 15:00

          Как удалить файл через PHP: функция unlink

          Как удалить файл через PHP

          Оглавление:

          Для чего удалять
          Что такое unlink и как использовать
          Примеры
          Резюме

          Для чего удалять файл через PHP

          Сценариев для удаления файла через PHP — масса. Например, это может быть временный файл, который создаётся при добавлении функционала регистрации на сайте. Или вы хотите заменить изображение товара на новое (перед загрузкой нового изображения потребуется удалить предыдущее). В перечисленных и других случаях на помощь придёт функция unlink.

          Функция unlink (синтаксис)

          Функция unlink() в PHP используется для удаления файла. Стандартно, происходит возврат TRUE — при успешной попытке и FALSE — при неуспешной.

          Простой пример

          unlink("myfile.txt"); // Удаление

          Синтаксис

          unlink(file_path, context)

          Параметры

          • file_path — используется для задания пути к объекту, который необходимо удалить. В случаях когда параметр содержит символическую ссылку — она автоматически удаляется.

          • context — используется для задания ресурса (по сути, это набор параметров и соответствующих опций, так называемый контекст). Параметр появился в PHP, начиная с пятой версии

          В чем отличие от unset

          В PHP unlink() — функция для работы с файловой системой, она используется для удаления файлов. Предположим, вы загрузили объект и хотите его удалить в дальнейшем, тогда unlink() вполне подойдёт (когда речь заходит о кодировке).

          unset() — функция не для работы с файловой системой, а для управления переменными. Простыми словами, она делает переменную неопределенной, обнуляя её значение. Таким образом, unset() используется для уничтожения переменной в PHP.

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

          Пример:

          <?php
          $file_pointer = "my.txt";
          if (!unlink($file_pointer)) {
          echo ("Файл не может быть удалён!");
          } else {
          echo ("Файл удален!");
          }
          ?>

          Вывод:

          Файл не может быть удалён!

          Изучение способов удаления принесет вам пользу в долгосрочной перспективе. Ну а чтобы пользы было ещё больше — успейте записаться на курс бэкенд-разработчик от Loft.

          Остались вопросы?
          Укажите ваши данные, и мы вам перезвоним

          Примеры

          Давайте посмотрим разные сценарии: удаление единичного файла, объектов в папке и по их маске.

          Удаление одного файла

          Если на сервере существует единственный файл, который нужно стереть, можно использовать элементарную конструкцию:

          unlink($filepath)

          *Обратите внимание, что путь указывается в следующем формате:

          "/home/user/www/test.ru/blog/temlfile.html"

          Таким образом, файл с именем tempfile.html, в результате выполнения, будет удалён.

          Удаление всех файлов в папке

          Удалить можно и все объекты внутри папки. Допустим: у нас есть папка с временными файлами. Пусть папка будет иметь условное название temp. Для удаление всех файловых объектов внутри неё вы можете использовать конструкцию вида:

          array_map('unlink', glob(dirname(__FILE__).'/temp/*'));

          В результате выполнения этого кода объекты, содержащиеся внутри этого пути, будут стерты:

          (glob(dirname(__FILE__).'/temp/*'))

          Удаление по маске

          Удалить через PHP можно также с учётом необходимой вам маски. Допустим, требуется удалить все файлы с расширением .TXT в какой-то конкретный директории. Используем конструкцию следующего вида

          array_map('unlink', glob(dirname(__FILE__).'/temp/*txt'));

          В результате все объекты внутри, имеющие расширение .TXT, будут стерты из папки temp.

          Вывод

          Вместо вывода — дадим ещё несколько примеров удаление через PHP, чтобы лучше закрепить тему.

          Удаление существующего файлового объекта

          Допустим, нам нужно удалить файл test.txt, если он существует. Мы реализовали этот сценарий следующим образом:

          <?php
          //Назначим имя
          $filename = "test.txt";
          //Проверим существование
          if(file_exists($filename))
          {
          //Удалим
          if (!unlink($filename)) {
          echo ("<br />Во время удаления $filename file произошла ошибка");
          }
          else {
          echo ("</br>The <b>$filename</b> файл был удален.");
          }
          }
          else
          echo "<br />The <b>$filename</b> файл не существует.";
          ?>

          Примечание:

          • Для проверки наличия требуемого объекта мы используем функцию file_exists().

          • Если файл существует в текущем каталоге, он будет удален.

          • Если его не существует — PHP сообщит об ошибке.

          Остались вопросы?
          Укажите ваши данные, и мы вам перезвоним

          Удаление всех файлов и папок из каталога

          Каталог может включать в себя один или сразу несколько подкаталогов, внутри которых также могут содержаться файлы (либо папки]. Если нужно стереть какой-либо каталог, предварительно необходимо удалить все файлы внутри него. Представим подобный сценарий:

          <?php
          //Установим путь к каталогу
          $dir_path = "test";
          //Определим функцию для рекурсивного удаления каталога
          Dir($path) {
          //Проверим существование подкаталога
          $files = glob($path . '/*');
          //Проверим является ли значение файлом или папкой
          foreach ($files as $file) {
          is_dir($file) ? removeDir($file) : unlink($file);
          }
          //Удалим каталог
          rmdir($path);
          //Вернет TRUE
          return 1;
          }
          //Проверим возвращаемое значение функции
          if(removeDir($dir_path))
          echo "Все файлы и папки, включенные в $dir_path директорию, были удалены.";
          else
          echo "Во время удаления произошла ошибка.";
          ?>

          Примечания:

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

          • Каталог будет автоматически стёрт сразу после того, как он станет пустым.

          Удаление файла после создания

          Допустим нам необходимо удалить файл с названием test.txt. Вот как это можно сделать:

          <?php
          //Назначим имя
          $filename = "test.txt";
          //Открываем для записи
          $fh = fopen($filename, 'w+');
          //Напишем какой-нибудь текст внутри
          fwrite($fh, 'Добро пожаловать!');
          fclose($fh);
          //Проверим существует ли
          if(file_exists($filename))
          {
          echo "<br />The <b>$filename</b> file exists.";
          //Удалим
          if(!unlink($filename)) {
          echo ("<br />Во время удаления $filename file произошла ошибка");
          }
          else {
          echo ("<br />Файл <b>$filename</b> был успешно удален.");
          }
          }
          else
          echo "<br />Файл <b>$filename</b> не найден.";
          ?>

          Примечания:

          • Для проверки создания объекта применена функция file_exists().

          • Когда объект найден в указанном каталоге — он автоматически стирается.

          • Удаление происходит через функцию unlink().

          • Если объект в указанной директории не найден — вернётся ошибка.

          Удаление всех файлов из определенного каталога

          Допустим нам необходимо удалить все файлы из условного каталога, который называется "test/video". Вот как можно представить этот сценарий:

          <?php
          //Установим путь к каталогу
          $dir_path = "test/video";
          //Проведем поиск по всем файлам в указанном каталоге
          foreach (glob($dir_path."/*.*") as $filename)
          {
          //Выведем имя и его размер
          echo "<br />Название файла <b>$filename</b>";
          echo "<br />Размер файла <b>".filesize($filename)."</b> байт.";
          //Удалим
          if (!unlink($filename))
          echo ("<br />Во время удаления файла <b>$filename</b> произошла ошибка.");
          else
          echo ("<br />Файл <b>$filename</b> был успешно удален.");
          }

          Примечания:

          • Как и в примере до этого, название и фактический размер выводятся непосредственно перед удалением.

          • Для маркировки разных видов расширений мы применили маску вида "*.*".

          Хотите стать крутым и востребованным веб-разработчиком? У нас есть специализированный курс!

          Остались вопросы?
          Укажите ваши данные, и мы вам перезвоним

          Поделиться

          Не сиди

          без дела

          учись

          онлайн!

          Содержание

          • Для чего удалять
            • Что такое unlink и как использовать
              • Примеры
                • Резюме
                  • © 2012 - 2023 LOFT

                    Школа онлайн образования

                  • © 2012 - 2023 LOFT

                    Школа онлайн образования

                    • +7 (800) 600 09 54
                    • +7 (812) 339 22 01
                    • [email protected]
                  • Полезная рассылка

                    Подпишись, чтобы быть в курсе наших новостей, акций и скидок.

                  • Полезное
                    • Карта курсов
                    • B2B
                    • Работодателям
                    • Партнерская программа
                    • Вакансии
                    • Стать автором
                    • Подарочные сертификаты
                    • Вебинары
                    • Блог
                    • FAQ
                  • Информация
                    • О нас
                    • Отзывы
                    • Сведения об образовательной организации
                    • Правовая информация
                    • Способы оплаты
                    • Контакты
                    Безопасная передача данных