Меню Рубрики

Php windows удалить файл

Как удалить файл в PHP?

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

PHP функция unlink()

А начну я с php-функции unlink() , которая и осуществляет удаление файла:

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

Здесь $filename – путь к файлу, а $context (не обязательно) – описание контекстов для работы с потоками (поддерживается в PHP, начиная с 5.0.0) . Функция возвращает TRUE в случае успешного завершения или FALSE в случае возникновения ошибки.

Пример использования php-функции unlink():

$filename = ‘./path/to/file.txt’;
if ( !(@unlink($filename)) ) die(‘Error Delete File.’);

Почему эта функция называется unlink()?

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

Примечательно здесь и то, что в Unix можно связать несколько таких точек с одними и теми же данными. Таки данные будут существовать до тех пор, пока существует хотя бы одна ссылка на них. Но если все ссылки будут уничтожены, то и сами данные будут уничтожены. Таким образом, функция unlink() предназначена для удаления именно ссылок, и уже как следствия данных файла.

В Windows такого нет и функция unlink() удаляет именно файл. Более того, некоторые версии PHP для Windows вообще не поддерживают unlink() . В таком случае используется команда del через system() или exec() , например:

$filename = ‘/2014/04/file.txt’;
if ( isset($_ENV[‘WINDIR’]) ) <
@exec(‘del ‘. $filename);
if ( file_exists($filename) ) die(‘Error Delete File.’);
> else if ( !(@unlink($filename)) ) <
die(‘Error Delete File.’);
>

В данном случае переменная среды $_ENV[‘WINDIR’] может служить маркером использования Windows-платформы, а проверка выполнения удаления файла осуществляется через php-функцию file_exists() , которая осуществляет проверку существования файла.

Как удалить файл(ы) в PHP?

В некоторых случаях может получиться и так, что функция unlink() не будет иметь доступа к удалению файла, т.е. получаем ошибку [function.unlink]: permission denied. Это может быть связано с неправильно указанным путём к файлу или отсутствием прав доступа.

Интересным вариантом для работы с путями к файлу является использование php-функций getcwd() (получает имя текущего рабочего каталога) и chdir() (изменяет текущий каталог на указанный) , например:

$file_path = ‘path/to’;
$file_name = ‘/2014/04/file.txt’;
$old = getcwd();
if ( !(@chdir($file_path)) ) die(‘Error open path.’);
if ( !(@unlink($file_name)) ) die(‘Error Delete File.’);
chdir($old);

Как вы видите, так в чём-то проще ориентироваться и отследить проблему. В тоже время, будет не лишним, после выполнения удаления вернуться в текущий каталог $old .

Что же до проблем доступа, то здесь можно попробовать использовать php-функцию chmod() (изменяет режим доступа к файлу) , например:

$filename = ‘/2014/04/path/to/file.txt’;
@chmod($filename, 0666);
if ( !(@unlink($filename)) ) die(‘Error Delete File.’);

Если Вам необходимо удалить все файлы в директории удобно использовать комбинацию из php-функций array_map() (применяет callback-функцию ко всем элементам массива) и glob() (находит файловые пути, совпадающие с шаблоном) , например:

Решение проблемы многопоточности при удалении файлов

Гораздо сложнее, когда речь заходит о крупных сайтах, где велико количество одновременных запросов (потоков) к скрипту. Здесь существует ряд решений. Я же приведу лишь одно из них, основное на использовании семафоров.

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

Для получения ресурса семафора используется функция sem_get() . Функцией можно получить семафор со значением, отличающимся от единицы, и тогда захватить семафор смогут несколько потоков. Для захвата используется функция sem_acquire() . Пример:

Обратить внимание на то, что здесь используется дополнительная проверка на существование файла file_exists() . Дело в том, что когда первый поток захватит семафор, удалит файл и отпустит семафор, второй поток сможет продолжить выполнение без удаления файл, которого уже нет.

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

На этом у меня всё. Надеюсь, что моя статья была Вам полезна или просто познавательно. Спасибо за внимание. Удачи!

Никто ещё не оставил комментариев, станьте первым.

Источник

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

Как и зачем нужно удалять файл через php? Если это можно сделать руками? Ну. это совсем примитивный вопрос. Если вы периодически встречаетесь с различными функциями, которые работают с файлами, то вы, наверное, знаете, что во многих местах может встречаться удаление файла php.

Всё об удалении файла через php

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

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

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

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

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

Синтаксис unlink

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

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

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

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

unlink(«test.html»); Лучше всего использовать путь до файла на сервере ! Он всегда одинаковый!
И. И как-то мы делали стенд по удалению файла
Там по кнопке можно создать файл, а оптом удалить файл по нажатию на кнопку.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Источник

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

Как удалить файл с моего сервера с помощью PHP если файл находится в другой директории?

вот мой макет страницы:

  • projects/backend/removeProjectData.php (этот файл удаляет все мои записи для базы данных, а также должен удалить связанный файл)
  • public_files/22.pdf (место, где находится этот файл.)

Я использую unlink функция:

но это всегда дает мне ошибку, что файл не существовать. Есть идеи?

6 ответов

следующее должно помочь

  • realpath — возвращает канонизированный абсолютный путь
  • is_writable — говорит ли именем запись
  • unlink — удаляет файл

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

Проверьте свои разрешения в первую очередь на файл, чтобы убедиться, что вы можете а) увидеть его из своего скрипта, и б) иметь возможность удалить его.

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

(в PHP 5.3 я считаю, что вы можете использовать __DIR__ константы вместо dirname() но я еще не использовал его сам)

вы можете удалить файл с помощью

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

решение AIO, обрабатывает все, это не моя работа, но я просто улучшил себя. Наслаждайтесь!

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

на выводит базовый путь к вашему проекту. The /img/tasks/ две папки вниз с моего пути. И, наконец, есть мой образ, который я хочу удалить, который вы можете сделать во все, что вам нужно.

С этим у меня не было никаких проблем с получением моих файлов на моем сервере и удалением их.

Источник

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

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

  • Php windows 1251 utf 8 iconv utf
  • Php web server windows
  • Php serial port windows
  • Php restart windows 7
  • Php postgresql установка windows