Как удалить файл php
Перейти к содержимому

Как удалить файл php

  • автор:

PharData::delete

Удаляет файл в архиве. Функционально аналогично вызову unlink() на эквиваленте потоковой обёртки, как показано в примере ниже.

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

Путь до удаляемого файла.

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

Возвращает true в случае успешного выполнения, но лучше использовать проверку исключений.

Ошибки

Выбрасывает исключение PharException в случае возникновения ошибки при сохранении изменений на диск.

Примеры

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

try $phar = new PharData ( ‘myphar.zip’ );
$phar -> delete ( ‘unlink/me.php’ );
// аналог следующего кода:
unlink ( ‘phar://myphar.phar/unlink/me.php’ );
> catch ( Exception $e ) // обработка ошибок
>
?>

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

  • Phar::delete() — Удаляет файл внутри phar-архива

unlink

Удаляет файл filename . Функция похожа на функцию unlink() Unix в C. При неудачном выполнении будет вызвана ошибка уровня E_WARNING .

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

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

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

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

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

Версия Описание
7.3.0 В Windows теперь можно удалить файлы функцией unlink() с использованием дескрипторов, хотя раньше это не удавалось. Тем не менее, всё ещё невозможно повторно создать удалённый файл, пока все дескрипторы к нему не будут закрыты.

Примеры

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

$fh = fopen ( ‘test.html’ , ‘a’ );
fwrite ( $fh , ‘

Привет, мир!

‘ );
fclose ( $fh );

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

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

User Contributed Notes 12 notes

11 years ago

This will delete all files in a directory matching a pattern in one line of code.

13 years ago

Deleted a large file but seeing no increase in free space or decrease of disk usage? Using UNIX or other POSIX OS?

The unlink() is not about removing file, it’s about removing a file name. The manpage says: «unlink — delete a name and possibly the file it refers to».

Most of the time a file has just one name — removing it will also remove (free, deallocate) the `body’ of file (with one caveat, see below). That’s the simple, usual case.

However, it’s perfectly fine for a file to have several names (see the link() function), in the same or different directories. All the names will refer to the file body and `keep it alive’, so to say. Only when all the names are removed, the body of file actually is freed.

The caveat:
A file’s body may *also* be `kept alive’ (still using diskspace) by a process holding the file open. The body will not be deallocated (will not free disk space) as long as the process holds it open. In fact, there’s a fancy way of resurrecting a file removed by a mistake but still held open by a process.

10 years ago

unlink($fileName); failed for me .
Then i tried using the realpath($fileName) function as
unlink(realpath($fileName)); it worked

just posting it , in case if any one finds it useful .

13 years ago

Here the simplest way to delete files with mask

$mask = «*.jpg»
array_map ( «unlink» , glob ( $mask ) );
?>

19 years ago

To delete all files of a particular extension, or infact, delete all with wildcard, a much simplar way is to use the glob function. Say I wanted to delete all jpgs .

foreach ( glob ( «*.jpg» ) as $filename ) echo » $filename size » . filesize ( $filename ) . «\n» ;
unlink ( $filename );
>

15 years ago

I have been working on some little tryout where a backup file was created before modifying the main textfile. Then when an error is thrown, the main file will be deleted (unlinked) and the backup file is returned instead.

Though, I have been breaking my head for about an hour on why I couldn’t get my persmissions right to unlink the main file.

Finally I knew what was wrong: because I was working on the file and hadn’t yet closed the file, it was still in use and ofcourse couldn’t be deleted 🙂

So I thought of mentoining this here, to avoid others of making the same mistake:

// First close the file
fclose ( $fp );

// Then unlink 🙂
unlink ( $somefile );
?>

15 years ago

To anyone who’s had a problem with the permissions denied error, it’s sometimes caused when you try to delete a file that’s in a folder higher in the hierarchy to your working directory (i.e. when trying to delete a path that starts with «../»).

So to work around this problem, you can use chdir() to change the working directory to the folder where the file you want to unlink is located.

$old = getcwd (); // Save the current directory
chdir ( $path_to_file );
unlink ( $filename );
chdir ( $old ); // Restore the old working directory
?>

9 years ago

This might seem obvious, but I was tearing my hair out with this problem — make sure the file you’re trying to delete isn’t currently being used. I had a script that was parsing a text file and was supposed to delete it after completing, but kept getting a permission denied error because I hadn’t explicitly closed the file, hence it was technically still being «used» even though the parsing was complete.

1 year ago

if you’re looking for a recursive unlink:

/**
* delete a file or directory
* automatically traversing directories if needed.
* PS: has not been tested with self-referencing symlink shenanigans, that might cause a infinite recursion, i don’t know.
*
* @param string $cmd
* @throws \RuntimeException if unlink fails
* @throws \RuntimeException if rmdir fails
* @return void
*/
function unlinkRecursive ( string $path , bool $verbose = false ): void
if (! is_readable ( $path )) return;
>
if ( is_file ( $path )) if ( $verbose ) echo «unlink: < $path >\n» ;
>
if (! unlink ( $path )) throw new \RuntimeException ( «Failed to unlink < $path >: » . var_export ( error_get_last (), true ));
>
return;
>
$foldersToDelete = array();
$filesToDelete = array();
// we should scan the entire directory before traversing deeper, to not have open handles to each directory:
// on very large director trees you can actually get OS-errors if you have too many open directory handles.
foreach (new DirectoryIterator ( $path ) as $fileInfo ) if ( $fileInfo -> isDot ()) continue;
>
if ( $fileInfo -> isDir ()) $foldersToDelete [] = $fileInfo -> getRealPath ();
> else $filesToDelete [] = $fileInfo -> getRealPath ();
>
>
unset( $fileInfo ); // free file handle
foreach ( $foldersToDelete as $folder ) unlinkRecursive ( $folder , $verbose );
>
foreach ( $filesToDelete as $file ) if ( $verbose ) echo «unlink: < $file >\n» ;
>
if (! unlink ( $file )) throw new \RuntimeException ( «Failed to unlink < $file >: » . var_export ( error_get_last (), true ));
>
>
if ( $verbose ) echo «rmdir: < $path >\n» ;
>
if (! rmdir ( $path )) throw new \RuntimeException ( «Failed to rmdir < $path >: » . var_export ( error_get_last (), true ));
>
>
?>

8 years ago

On OSX, when fighting against a «Permission Denied» error, make sure, the directory has WRITE permissions for the executing php-user.

Furthermore, if you rely on ACLs, and want to delete a file or symlink, the containing directory needs to have «delete_child» permission in order to unlink things inside. If you only grant «delete» to the folder that will allow you to delete the container folder itself, but not the objects inside.

3 years ago

unlink works the same as the rm command on nix based loses or del command on windows, it will not resolve the file but remove the exact path given even if that path is just a link.

E.G
/var/www/test/index.php = symlink(/home/test/www/index.php)
unlink ( «/var/www/test/index.php» );
?>
Will just delete the link, not the original file where as
unlink ( «/home/test/www/index.php» );
?>
Will unlink the original file path and break the symlink, and allow the system to overwrite as the filesystem will not know of the file’s location anymore.

10 years ago

The best way to delete files by mask is as follows:
array_walk ( glob ( ‘/etc/*’ ), ‘unlink’ );
?>
Do not use array_map mentioned below — it’s purpose is to process values in a given array AND COLLECT data returned by the callback function. So, array_map is slower and uses additional memory compared to array_walk.

  • Copyright © 2001-2024 The PHP Group
  • My PHP.net
  • Contact
  • Other PHP.net sites
  • Privacy policy

Как удалить файл php

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

Удалить один файл на сервере в PHP

Для удаления одного файла с сервера в PHP необходимо просто воспользоваться командой:

unlink($filepath)

где $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?»
  • Комментариев еще нет.
    Оставьте свой комментарий первым!

Как удалить файл php

В связи с переходом на новый движок. возможны сбои в работе! Простите!
Работы производятся прямо сейчас 02-03-2024! ��

Где применяется удаление файла через php!?

Самое простое, где мы применяли удаление файла – это регистрация ,

Хотя о конкретном удалении файла мы там не говорили, но мы там говорили о создании временного файла с данными и вот его то нам м придется удалять и это уже будет в авторизации!

Можно ли заменить работу с файлом и работу в базе данных.

Например записать в базу данных, стереть в базе данных -> конечно можно, но как по мне, легче, для меня лично, записать в файл, потом удалить файл!

Функция которая удаляет файлы php -> unlink (синтаксис)

Функция, которая умеет удалять файлы в php называется unlink

Как переводится unlink

Слово unlink переводится как — разъединять, отсоединить — довольно странно, поскольку эти слова только отдаленно напоминают удаление. файла!

Синтаксис unlink

bool unlink ( string $filename [, resource $context ] )

Функция unlink, имеет два параметра —

Путь к файлу — filename Context -Замечание: Поддержка контекста была добавлена в PHP 5.0.0.

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

Если файл лежит в той же папке, что и скрипт с функцией, то запись в скрипте может быть такая:

Лучше всего использовать путь до файла на сервере ! Он всегда одинаковый!

Там по кнопке можно создать файл, а оптом удалить файл по нажатию на кнопку.

Ошибка удаления файла

Если после удаления файла вы перезагрузите страницу, то получите ошибку типа «Warning»:

Ошибка удаления файла

Самый простой скрипт удаления файла

Для того, чтобы удалить файл вам понадобится несколько компонентов :

Нам потребуется путь до корневой на сревре:

$home = $_SERVER[‘DOCUMENT_ROOT’].»/»;

Еще нам потребуется путь_до_папки для удаления файла

путь_до_папки

И собственно файл, который будем удалять с помощью php

Соберем строку полностью по удалению файла и присвоим результат переменной:

$unlink = @unlink($home.’путь_до_папки/файл.html’);

И в результате, возврата, вернет либо true, либо false выводим результат удаления файла с помощью unlink

if($unlink == true) < echo "получилось удалить";>else< echo "не получилось удалить";>

Соберем вместе наш код удаления файла php :

Код самого простого скрипта удаления файла php

Удаление файла по его адресу

Следующий скрипт удаления файла по его адресу не очень большой в смысле строк, но довольно большой в смысле, если описывать каждую строчку! Как было это сделано в третьем пункте!

Поэтому! -> только логика и немного описания.

Страница пример(он же в архиве) и мы можем видеть два поля input, одно поле ввода, другое тип submit(отправить)

В первое поле нужно вставить ссылку на файл на сайте, который хотим удалить!

И далее нажать «Удалить файл«

Как проверить работоспособность скрипта по удалению файла php!?

Скачиваем архив со скриптом по удалению файла php на сайте.

Нужно вытащить страницу из архива, и закачать в какую-то папку на сайте.

Создаем какую-то тестовую страницу, которую будем удалять, в любом месте на сайте.

Открываем её в браузере.

Копируем из адресной строки браузера адрес страницы.

Открываем страницу со скриптом по удалению файла также в браузере и вставляем в строку ввода -> ваш ранее скопированную строку тестовой страницы! И нажимаем удалить файл!

Где взять адрес для удаления файла?

Итак. у нас есть форма с вводом адреса для удаления файла.

Но где взять такой адрес?

Открываем вот эту страницу.

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

Кликаем по любому названию страницы с радиоточкой.

Файл откроется в новой вкладке!

Копируем адрес данного файла и вставляем в форму и смотрим, как он будет удален.

Проверяем — вставляем скопированный путь в строку браузера и нажимаем «Enter»

Если никаких файлов вы не видите, то вам нужно создать файл на данной странице

Алгоритм с открытием и получением адреса файла аналогичен!

Удаление файла по выделенной радиоточке

Прежде чем начать опять очень долго объяснять каждую строчку в скрипте, но вкратце все же:

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

В чем разница между 4 и 5 пунктами!?

Я не сижу и не выдумываю, какой же скрипт написать, большинство скриптов — это так или иначе были сделаны на основе или целиком на тех скриптах, которые я сам использую!

Предположим, что у вас есть какой-то список с файлами и вам нужно, чтобы была радиоточка напротив ссылки на файл -> далее, отметить радиоточку , нажать -> удалить файл -> файл удален. Это очень удобно.

Я не знаю, как у вас будет формироваться данный список -> это ваше дело, но у нас этот список формируется автоматически.

Мы взяли сформированную ссылку на файл и поместили в input с радиоточкой в value :

далее в цикле перебрали массив, который получился от функции scandir и к каждой строке с ссылкой добавляем этот инпут и у нас получается вот такое -> пример

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

И собственно, скрипт, что и в пункте 4, который и удалит выделенный файл и отправленный через радиоточку value

1). Данные из value:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *