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

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

Обзор функции

Прежде всего стоит обратить внимание на супермассив $_SERVER, который содержит в себе элементы, нужные для работы с файлами. Речь идёт о конкретно $_SERVER[‘DOCUMENT_ROOT’], который возвращает абсолютный путь сервера. Под этим термином подразумевается расположение папки public_html, в которую помещается видимое пользователям содержимое ресурса, с точки зрения сервера. То есть, просто скопировать URL из адресной строки браузера не выйдет.

Сам процесс удаления производится с помощью unlink(). Учтите, что влияние этой функции распространяется только на файлы, а не на директории. Для работы с каталогами следует задействовать rmdir(), которая срабатывает, только если в папке нет никаких документов.

Для директории должны быть выставлены соответствующие разрешения, позволяющие удалять её содержимое (например, можно выставить 0777 для полного доступа в системе). В любом случае, вам сначала потребуется программного или вручную удалить содержимое папки. С помощью кода с задействованием scandir() можно сделать это, представив название файлов в директории в виде массива, и потом обработав их с помощью rmdir().

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

Тем не менее, можно будет сделать это через функцию exec(), которая вводит команды прямо в терминал ОС, но, к сожалению, является запрещённой во многих веб-хостингах. Это делается из соображений безопасности. Если же сайт находится на собственном VDS, можно отключить блокировку exec() посредством конфигурации PHP. При этом команды будут отличаться в зависимости от операционной системы.

Для самого простого пользования unlink() достаточно указать путь к файлу, как в примерах ниже. У него, как и у rmdir(), есть ещё и второй аргумент $context, однако его задействование необязательно и нужно лишь в довольно редких случаях.

Примеры использования

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

Поскольку unlink() возвращает true при успешном выполнении, а false и ошибку класса E_WARNING при неудаче, можно проверить результат выполнения посредством if-elseif-else.

<?
$delete=unlink($_SERVER[‘DOCUMENT_ROOT]’.»/test.txt»);# удаление файла test.txt
if($delete==true){
echo»Файл удалён»;
}else{
echo»Файл не удалён».
}

Удаление директории с проверкой

Аналогично – и с папками.

<?
$delete=$_SERVER[‘DOCUMENT_ROOT’].»/test»;# Удаление папки test
if($delete==true){
echo»Папка удалена»;
}else{
echo»Папка не удалена»;
}

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

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