- Как удалить файл через PHP: функция unlink
- Функция unlink (синтаксис)
- Примеры
- Удаление одного файла
- Удаление всех файлов в папке
- Удаление по маске
- Вывод
- Php delete html file
- Удалить один файл на сервере в PHP
- Удалить все файлы в папке (директории) через PHP
- Удалить файлы по маске (через PHP)
- Все комментарии к заметке «Как удалить файл через PHP?»
- 6 Ways To Delete Files In PHP (Simple Examples)
- TLDR – QUICK SLIDES
- TABLE OF CONTENTS
- WAYS TO DELETE FILES IN PHP
- 1) SIMPLE DELETE
- 2) DELETE IF FILE EXISTS
- 3) DELETE ONLY CERTAIN FILE TYPES
- 4) DELETE FILES ONLY IF OLDER THAN A SET DATE
- 5) DELETE THE ENTIRE FOLDER
- 6) COMMAND LINE DELETE
- DOWNLOAD & NOTES
- SUPPORT
- EXAMPLE CODE DOWNLOAD
- EXTRA BITS & LINKS
- THE SUMMARY
- MORE LINKS
- INFOGRAPHIC CHEAT SHEET
- THE END
- Leave a Comment Cancel Reply
- Search
- Breakthrough Javascript
- Socials
- About Me
Как удалить файл через PHP: функция unlink
Сценариев для удаления файла через PHP — масса. Например, это может быть временный файл, который создаётся при добавлении функционала регистрации на сайте. Или вы хотите заменить изображение товара на новое (перед загрузкой нового изображения потребуется удалить предыдущее). В перечисленных и других случаях на помощь придёт функция unlink.
Функция unlink (синтаксис)
Функция unlink() в PHP используется для удаления файла. Стандартно, происходит возврат TRUE — при успешной попытке и FALSE — при неуспешной.
Простой пример
unlink("myfile.txt"); // Удаление
- file_path — используется для задания пути к объекту, который необходимо удалить. В случаях когда параметр содержит символическую ссылку — она автоматически удаляется.
- context — используется для задания ресурса (по сути, это набор параметров и соответствующих опций, так называемый контекст). Параметр появился в PHP, начиная с пятой версии
В чем отличие от unset
В PHP unlink() — функция для работы с файловой системой, она используется для удаления файлов. Предположим, вы загрузили объект и хотите его удалить в дальнейшем, тогда unlink() вполне подойдёт (когда речь заходит о кодировке).
unset() — функция не для работы с файловой системой, а для управления переменными. Простыми словами, она делает переменную неопределенной, обнуляя её значение. Таким образом, unset() используется для уничтожения переменной в PHP.
На практике функция может использоваться для удаления одной переменной, нескольких переменных или элемента из массива.
$file_pointer = "my.txt";
if (!unlink($file_pointer)) echo ("Файл не может быть удалён!");
> else echo ("Файл удален!");
>
?>
Файл не может быть удалён!
Изучение способов удаления принесет вам пользу в долгосрочной перспективе. Ну а чтобы пользы было ещё больше — успейте записаться на курс бэкенд-разработчик от Loft.
Примеры
Давайте посмотрим разные сценарии: удаление единичного файла, объектов в папке и по их маске.
Удаление одного файла
Если на сервере существует единственный файл, который нужно стереть, можно использовать элементарную конструкцию:
*Обратите внимание, что путь указывается в следующем формате:
"/home/user/www/test.ru/blog/temlfile.html"
Таким образом, файл с именем tempfile.html, в результате выполнения, будет удалён.
Удаление всех файлов в папке
Удалить можно и все объекты внутри папки. Допустим: у нас есть папка с временными файлами. Пусть папка будет иметь условное название temp. Для удаление всех файловых объектов внутри неё вы можете использовать конструкцию вида:
array_map('unlink', glob(dirname(__FILE__).'/temp/*'));
В результате выполнения этого кода объекты, содержащиеся внутри этого пути, будут стерты:
Удаление по маске
Удалить через PHP можно также с учётом необходимой вам маски. Допустим, требуется удалить все файлы с расширением .TXT в какой-то конкретный директории. Используем конструкцию следующего вида
array_map('unlink', glob(dirname(__FILE__).'/temp/*txt'));
В результате все объекты внутри, имеющие расширение .TXT, будут стерты из папки temp.
Вывод
Вместо вывода — дадим ещё несколько примеров удаление через PHP, чтобы лучше закрепить тему.
Удаление существующего файлового объекта
Допустим, нам нужно удалить файл test.txt, если он существует. Мы реализовали этот сценарий следующим образом:
//Назначим имя
$filename = "test.txt";
//Проверим существование
if(file_exists($filename))
//Удалим
if (!unlink($filename)) echo ("
Во время удаления $filename file произошла ошибка");
>
else echo ("The $filename файл был удален.");
>
>
else
echo "
The $filename файл не существует.";
?>
- Для проверки наличия требуемого объекта мы используем функцию file_exists().
- Если файл существует в текущем каталоге, он будет удален.
- Если его не существует — 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. Вот как это можно сделать:
//Назначим имя
$filename = "test.txt";
//Открываем для записи
$fh = fopen($filename, 'w+');
//Напишем какой-нибудь текст внутри
fwrite($fh, 'Добро пожаловать!');
fclose($fh);
//Проверим существует ли
if(file_exists($filename))
echo "
The $filename file exists.";
//Удалим
if(!unlink($filename)) echo ("
Во время удаления $filename file произошла ошибка");
>
else echo ("
Файл $filename был успешно удален.");
>
>
else
echo "
Файл $filename не найден.";
?>
- Для проверки создания объекта применена функция file_exists().
- Когда объект найден в указанном каталоге — он автоматически стирается.
- Удаление происходит через функцию unlink().
- Если объект в указанной директории не найден — вернётся ошибка.
Удаление всех файлов из определенного каталога
Допустим нам необходимо удалить все файлы из условного каталога, который называется «test/video». Вот как можно представить этот сценарий:
//Установим путь к каталогу
$dir_path = "test/video";
//Проведем поиск по всем файлам в указанном каталоге
foreach (glob($dir_path."/*.*") as $filename)
//Выведем имя и его размер
echo "
Название файла $filename";
echo "
Размер файла ".filesize($filename)." байт.";
//Удалим
if (!unlink($filename))
echo ("
Во время удаления файла $filename произошла ошибка.");
else
echo ("
Файл $filename был успешно удален.");
>
- Как и в примере до этого, название и фактический размер выводятся непосредственно перед удалением.
- Для маркировки разных видов расширений мы применили маску вида «*.*».
Хотите стать крутым и востребованным веб-разработчиком? У нас есть специализированный курс!
Php delete html file
Когда строишь какие-то системы для управления контентом на PHP, то необходимо не только создавать файлы, но и удалять их. В краткой заметке я расскажу, как удалить один или несколько файлов в PHP.
Удалить один файл на сервере в PHP
где $filepath — это путь к файлу вида «/home/user/www/mysite.ru/test/testphpfiletodelete.html».
В результате файл testphpfiletodelete.html будет удалён с сервера.
Более подробно про функцию unlink() можно прочитать в официальной документации по PHP .
Для автоматического формирования пути к файлу я бы советовал использовать вот такую конструкцию:
$filepath = dirname(__FILE__).'/test/testphpfiletodelete.html';
dirname(__FILE__) в данном случае сформирует путь к директории, в которой находится исполняемый PHP скрипт.
Удалить все файлы в папке (директории) через PHP
Для удаления всех файлов, например, из папки /test/ (находящейся в корне сайта) можно выполнить всего одну команду на PHP:
array_map('unlink', glob(dirname(__FILE__).'/test/*'));
Данная командой найдёт все файлы в директории test (glob(dirname(__FILE__).’/test/*’)) и удалит каждый из них уже знакомой функцией unlink().
Удалить файлы по маске (через PHP)
Если же необходимо удалить не все файлы, а только определенные (например, все .html файлы в данной директории), то можно дополнить команду выше вот таким образом:
array_map('unlink', glob(dirname(__FILE__).'/test/*.html'));
Теперь выражение *.html выберет любые файлы с расширением html и, аналогично примеру выше, удалит их.
Виталий Жуков
16.05.2019
Все комментарии к заметке «Как удалить файл через PHP?»
6 Ways To Delete Files In PHP (Simple Examples)
Welcome to a tutorial on how to delete files in PHP. Need to remove some old, backup, or temporary files in PHP?
- To delete a file in PHP, use unlink(«TARGET FILE»);
- To remove an empty folder, use rmdir(«FOLDER»);
That covers the super quick basics, but “advanced deleting” entire folders and only certain file types is a different story. Just how do we do those? Read on for more examples!
TLDR – QUICK SLIDES
TABLE OF CONTENTS
WAYS TO DELETE FILES IN PHP
All right, let us now get into the examples of how to delete files in PHP.
1) SIMPLE DELETE
As in the introduction above, we use unlink() to delete files and rmdir() to remove directories. Take note that both functions will return true/false to indicate if the process is successful.
P.S. Copy-protected files cannot be deleted, and folders that are not empty cannot be removed.
2) DELETE IF FILE EXISTS
PHP will throw warnings when deleting files that do not exist. So here is a “quick fix” – Just do a file_exists() check before proceeding with the delete.
3) DELETE ONLY CERTAIN FILE TYPES
", GLOB_BRACE); // (B) LOOP AND DELETE if (count($files)>0) < foreach ($files as $f) < unlink($f); >>
Only want to clear out certain file types in a folder? Use the glob() function to help filter out a list of the selected files, then delete them one by one.
4) DELETE FILES ONLY IF OLDER THAN A SET DATE
Want to remove some old backups or outdated files? It’s pretty much the same story of using good old glob() to get the list of files in the folder. Then using filemtime() to check against the “file last modified” time – Delete the file if it is older than a set date.
5) DELETE THE ENTIRE FOLDER
0) < foreach ($all as $a) < if (is_dir($a)) < delFolder("$a/"); >else < echo unlink($a); >>> // (A3) DELETE CURRENT FOLDER ITSELF rmdir($folder); > // (B) GO! delFolder("d:/test/");
Since we can’t use rmdir() to delete an entire folder directly, we have to create a recursive function that will dig into the sub-folders and delete everything inside.
6) COMMAND LINE DELETE
Finally, this is not quite “delete in PHP”… But we can actually run shell commands in PHP to delete files and folders.
DOWNLOAD & NOTES
Here is the download link to the example code, so you don’t have to copy-paste everything.
SUPPORT
600+ free tutorials & projects on Code Boxx and still growing. I insist on not turning Code Boxx into a «paid scripts and courses» business, so every little bit of support helps.
EXAMPLE CODE DOWNLOAD
Click here for the source code on GitHub gist, just click on “download zip” or do a git clone. I have released it under the MIT license, so feel free to build on top of it or use it in your own project.
EXTRA BITS & LINKS
That’s all for the main tutorial, and here is a small section on some extras and links that may be useful to you.
THE SUMMARY
MORE LINKS
INFOGRAPHIC CHEAT SHEET
THE END
Thank you for reading, and we have come to the end of this guide. I hope that it has helped you with your project, and if you want to share anything with this guide, please feel free to comment below. Good luck and happy coding!
Leave a Comment Cancel Reply
Search
Breakthrough Javascript
Take pictures with the webcam, voice commands, video calls, GPS, NFC. Yes, all possible with Javascript — Check out Breakthrough Javascript!
Socials
About Me
W.S. Toh is a senior web developer and SEO practitioner with over 20 years of experience. Graduated from the University of London. When not secretly being an evil tech ninja, he enjoys photography and working on DIY projects.
Code Boxx participates in the eBay Partner Network, an affiliate program designed for sites to earn commission fees by linking to ebay.com. We also participate in affiliate programs with Bluehost, ShareASale, Clickbank, and other sites. We are compensated for referring traffic.