php удалить файл если существует
Как удалить файл в PHP?
Давайте попробуем решить простую задачу по удалению одного файла или нескольких файлов средствами PHP. В целом, здесь нет ничего сложного, но есть масса деталей, а также вариантов решений, о которых Вам стоит знать. В своей статье я не берусь объять необъятное, но растолковать пару вопросов и привести несколько примеров, думаю, смогу. Приступим?
PHP функция unlink()
Пример использования php-функции unlink():
Почему эта функция называется unlink()?
Дело в том, что в файловой системе Unix имеется различие между физическим расположением файлов на носителе и соответствующей структурой каталога. Поэтому при сохранении файла в определенной точке файловой системы эта точка дерева каталогов связывается с физическим местом хранения данных файла. Другими словами, путь к файлу в Unix, фактически, представляет собой уникальных идентификатор для одного из этих узлов.
Примечательно здесь и то, что в Unix можно связать несколько таких точек с одними и теми же данными. Таки данные будут существовать до тех пор, пока существует хотя бы одна ссылка на них. Но если все ссылки будут уничтожены, то и сами данные будут уничтожены. Таким образом, функция unlink() предназначена для удаления именно ссылок, и уже как следствия данных файла.
Как удалить файл(ы) в PHP?
В некоторых случаях может получиться и так, что функция unlink() не будет иметь доступа к удалению файла, т.е. получаем ошибку [function.unlink]: permission denied. Это может быть связано с неправильно указанным путём к файлу или отсутствием прав доступа.
Решение проблемы многопоточности при удалении файлов
Гораздо сложнее, когда речь заходит о крупных сайтах, где велико количество одновременных запросов (потоков) к скрипту. Здесь существует ряд решений. Я же приведу лишь одно из них, основное на использовании семафоров.
Как таковой, семафор служит своеобразным маркером процесса. При захвате семафора одним процессом, его значение уменьшается на единицу, а при отпускании — увеличивается на единицу. При этом, если текущее значение семафора равно нулю, процессу не удастся его захватить и он будет ожидать освобождения семафора.
На этом у меня всё. Надеюсь, что моя статья была Вам полезна или просто познавательно. Спасибо за внимание. Удачи!
Никто ещё не оставил комментариев, станьте первым.
Как удалить файл с сайта с помощью php, функция unlink, примеры использования
Всё об удалении файла через php
Где применяется удаление файла через php!?
Можно ли заменить работу с фалом и работу в базе данных.
Как переводится unlink
Синтаксис unlink
Возвращает TRUE в случае успешного завершения или FALSE.
Если файл лежит в той же папке, что и скрипт с функцией, то запись в скрипте может быть такая:
Самый простой скрипт удаления файла
Нам потребуется путь до корневой на сревре:
Еще нам потребуется путь_до_папки для удаления файла
И собственно файл, который будем удалять с помощью php
Соберем строку полностью по удалению файла и присвоим результат переменной:
И в результате, возврата, вернет либо true, либо false выводим результат удаления файла с помощью unlink
Код самого простого скрипта удаления файла php
Удаление файла по его адресу
Страница пример(он же в архиве) и мы можем видеть два поля input, одно поле ввода, другое тип submit(отправить)
В первое поле нужно вставить ссылку на файл на сайте, который хотим удалить!
И далее нажать «Удалить файл«
Как проверить работоспособность скрипта по удалению файла php!?
Скачиваем архив со скриптом по удалению файла php на сайте.
Нужно вытащить страницу из архива, и закачать в какую-то папку на сайте.
Создаем какую-то тестовую страницу, которую будем удалять, в любом месте на сайте.
Открываем её в браузере.
Копируем из адресной строки браузера адрес страницы.
Удаление файла по выделенной радиоточке
Прежде чем начать опять очень долго объяснять каждую строчку в скрипте, но вкратце все же:
У нас есть рабочий пример, о котором дальше и пойдет речь, правда удаление отключено, а то вы мне тут поудаляйте весь сайт
Мы взяли сформированную ссылку на файл и поместили в input с радиоточкой в value :
После этого, выбираем тот файл, который требуется удалить, нажав по радиоточке и нажимаем удалить!
И собственно, скрипт, что и в пункте 4, который и удалит выделенный файл и отправленный через радиоточку value
Работа с файлами в PHP
Чтение файла: file_get_contents()
С помощью функции file_get_contents() можно получить содержимое файла:
Также мы можем получить html-код какой-либо страницы в интернете:
Но работает это далеко не для всех сайтов, у многих есть защита от такого примитивного парсинга.
Чтение файла: file()
Функция file() позволяет получить содержимое файла в виде массива. Разделителем элементов является символ переноса строки.
Создадим в корне сайта файл data.txt со следующим содержимым:
Теперь запустим скрипт index.php со следующим кодом:
При запуске этого скрипта мы получим в браузере:
Заметили, что у первых двух строк длина 7 символов вместо пяти? Это из-за того, что каждая строка содержит в конце символы переноса строки.
Чаще всего они нам не нужны, поэтому их можно убрать, передав вторым параметром константу FILE_IGNORE_NEW_LINES :
Теперь у всех строк будет по 5 символов.
Если нам необходимо получить только заполненные строки в файле и пропустить пустые, можно передать вторым параметром константу FILE_SKIP_EMPTY_LINES :
Разумеется, мы можем передать сразу две константы:
Создание файла и запись в файл: file_put_contents()
Функция file_put_contents() позволяет создать файл и заполнить его данными.
Чтобы не перезаписывать данные, а добавить их в конец файла, нужно передать третьим параметром константу FILE_APPEND :
Также вторым параметром можно передать массив:
Но этот вариант не очень удобен, поскольку все элементы массива запишутся подряд, без каких-либо разделителей. Чтобы их добавить, можно использовать функцию implode:
Создание папки или структуры папок
Создать папку можно с помощью функции mkdir() (make directory):
Кроме этого, второй параметр может игнорироваться при заданной umask (пользовательская маска (user mask), которая нужна для определения конечных прав доступа). В этом случае принудительно сменить права можно функцией chmod() :
Также мы можем создать структуру папок рекурсивно, для этого нужно третьим параметром передать true :
Но в этом случае права доступа будут заданы только для конечной папки. Для изменения прав у каждой из папок придётся указывать права вручную:
Проверка существования файла или папки
Проверить существование папки или файла можно с помощью функции file_exists() :
Если вы хотите проверить существование только папки или только файла, для этого есть специальные функции is_dir() и is_file() :
Проверка прав доступа
Функции is_readable() и is_writable() проверяют, есть ли у пользователя, от имени которого запущен PHP, права на чтение и запись файла или папки:
Копирование, перенос и удаление файла
Для удаления файлов используется функция unlink() :
Чтобы скопировать файл, используем функцию copy() :
Для переименования и переноса файла в другую папку используется функция rename() :
Работа с файлами с помощью fopen()
Но иногда возникают ситуации, когда нам необходимы более продвинутые инструменты. Например, если у нас есть большой текстовый файл и мы хотим читать его построчно, а не весь сразу, для экономии оперативной памяти.
Итак, открыть (или создать и открыть) файл можно с помощью функции fopen() :
Для построчного чтения файла используется функция fgets() :
Также в PHP существует множество других полезных функций, работающих с дескриптором файла. Почитать о них можно в документации.
unlink
(PHP 4, PHP 5, PHP 7, PHP 8)
unlink — Удаляет файл
Описание
Список параметров
Возвращаемые значения
Возвращает true в случае успешного выполнения или false в случае возникновения ошибки.
Список изменений
Версия | Описание |
---|---|
7.3.0 | В Windows теперь можно удалить файлы функцией unlink() с использованием дескрипторов, хотя раньше это не удавалось. Тем не менее, всё ещё невозможно повторно создать удалённый файл, пока все дескрипторы к нему не будут закрыты. |
Примеры
Пример #1 Пример простого использования unlink()
Привет, мир!
Смотрите также
User Contributed Notes 11 notes
This will delete all files in a directory matching a pattern in one line of code.
Deleted a large file but seeing no increase in free space or decrease of disk usage? Using UNIX or other POSIX OS?
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.
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:
Here the simplest way to delete files with mask
Как удалить файл через PHP?
Как удалить файл с моего сервера с помощью PHP если файл находится в другой директории?
вот мой макет страницы:
Я использую unlink функция:
но это всегда дает мне ошибку, что файл не существовать. Есть идеи?
6 ответов
следующее должно помочь
запустите путь к файлу через realpath, затем проверьте, доступен ли возвращаемый путь для записи, и если да, то разблокируйте его.
Проверьте свои разрешения в первую очередь на файл, чтобы убедиться, что вы можете а) увидеть его из своего скрипта, и б) иметь возможность удалить его.
вы также можете использовать путь, рассчитанный из каталога, в котором вы сейчас запускаете скрипт, например:
(в PHP 5.3 я считаю, что вы можете использовать __DIR__ константы вместо dirname() но я еще не использовал его сам)
вы можете удалить файл с помощью
но если вы удаляете файл из его http-пути, то эта ссылка не работает должным образом. Вы должны указать правильный путь к файлу.
решение AIO, обрабатывает все, это не моя работа, но я просто улучшил себя. Наслаждайтесь!
Я знаю, что этот вопрос немного старый, но это что-то простое, что работает для меня очень хорошо, чтобы удалить изображения из моего проекта, над которым я работаю.
на выводит базовый путь к вашему проекту. The /img/tasks/ две папки вниз с моего пути. И, наконец, есть мой образ, который я хочу удалить, который вы можете сделать во все, что вам нужно.
С этим у меня не было никаких проблем с получением моих файлов на моем сервере и удалением их.