Удалить файл php скрипты

Работа с файлами в PHP

С помощью функции file_get_contents() можно получить содержимое файла:

Также мы можем получить html-код какой-либо страницы в интернете:

'; echo file_get_contents('https://ya.ru'); echo '';

Но работает это далеко не для всех сайтов, у многих есть защита от такого примитивного парсинга.

Чтение файла: file()

Функция file() позволяет получить содержимое файла в виде массива. Разделителем элементов является символ переноса строки.

Создадим в корне сайта файл data.txt со следующим содержимым:

Теперь запустим скрипт index.php со следующим кодом:

При запуске этого скрипта мы получим в браузере:

array(3) < [0]=>string(7) "Vasya " [1]=> string(7) "Petya " [2]=> string(5) "Gosha" >

Заметили, что у первых двух строк длина 7 символов вместо пяти? Это из-за того, что каждая строка содержит в конце символы переноса строки.

Чаще всего они нам не нужны, поэтому их можно убрать, передав вторым параметром константу FILE_IGNORE_NEW_LINES :

Теперь у всех строк будет по 5 символов.

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

Разумеется, мы можем передать сразу две константы:

Создание файла и запись в файл: file_put_contents()

Функция file_put_contents() позволяет создать файл и заполнить его данными.

Первым параметром функция принимает путь к файлу, вторым — строку с данными. Для создания пустого файла нужно передать вторым параметром пустую строку.

Если файла не существует — он будет создан. Если существует — данные в файле будут перезаписаны.

Чтобы не перезаписывать данные, а добавить их в конец файла, нужно передать третьим параметром константу FILE_APPEND :

Также вторым параметром можно передать массив:

Но этот вариант не очень удобен, поскольку все элементы массива запишутся подряд, без каких-либо разделителей. Чтобы их добавить, можно использовать функцию implode:

Создание папки или структуры папок

Создать папку можно с помощью функции mkdir() (make directory):

Вторым параметром указываются права доступа к файлу в виде восьмеричного числа, по-умолчанию это 0777 , что означает самые широкие права. Для Windows этот аргумент игнорируется.

Кроме этого, второй параметр может игнорироваться при заданной umask (пользовательская маска (user mask), которая нужна для определения конечных прав доступа). В этом случае принудительно сменить права можно функцией chmod() :

Также мы можем создать структуру папок рекурсивно, для этого нужно третьим параметром передать true :

Но в этом случае права доступа будут заданы только для конечной папки. Для изменения прав у каждой из папок придётся указывать права вручную:

Права доступа — это отдельная объёмная тема, поэтому сейчас мы её пока рассматривать не будем.

Проверка существования файла или папки

Проверить существование папки или файла можно с помощью функции file_exists() :

Если вы хотите проверить существование только папки или только файла, для этого есть специальные функции is_dir() и is_file() :

Проверка прав доступа

Функции is_readable() и is_writable() проверяют, есть ли у пользователя, от имени которого запущен PHP, права на чтение и запись файла или папки:

Копирование, перенос и удаление файла

Для удаления файлов используется функция unlink() :

Чтобы скопировать файл, используем функцию copy() :

Для переименования и переноса файла в другую папку используется функция rename() :

Работа с файлами с помощью fopen()

Функций file() , file_get_contents() и file_put_contents() достаточно для решения большинства задач, связанных с управлением файлами.

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

Итак, открыть (или создать и открыть) файл можно с помощью функции fopen() :

Функция fopen() возвращает так называемый лескриптор. Это ссылка, указатель на файл, его мы будем передавать в другие функции. Кстати, тип данных этого дескриптора — resource .

Первым параметром мы передаём путь к файлу, вторым — модификатор доступа к файлу. Ниже перечислены наиболее популярные модификаторы:

  • r — открытие для чтения, указатель переходит в начало файла.
  • r+ — открытие для чтения и записи, указатель переходит в начало файла.
  • w — открытие для записи, указатель переходит в начало файла. Если файла нет — создаётся, если есть — очищается от данных.
  • w+ — открытие для чтения и записи, в остальном аналогичен w .
  • a — открытие для записи, указатель переходит в конец файла. Если файла нет — создаётся.
  • a+ — открытие для чтения и записи, в остальном аналогичен a .
  • x — создание и открытие для записи, указатель переходит в начало файла. Если файл существует — PHP покажет ошибку.
  • x+ — создание и открытие для чтения и записи, в остальном аналогичен x .

Указатель — это нечто вроде курсора. Вы можете переместить его в любое место файла, чтобы добавить или отредактировать определённые данные.

Для записи данных в файл существует функция fwrite() . Давайте попробуем создать файл и записать в него какие-нибудь данные:

Заметьте, из-за модификатора w при каждом запуске скрипта данные в файле стираются и добавляются заново. Если модификатор заменить на a , данные будут не перезаписываться, а добавляться в конец файла.

Для построчного чтения файла используется функция fgets() :

При каждом запуске fgets получает следующую строку и возвращает её в $line . Вторым параметром передаётся максимальная длина строки. Это означает, что если строка слишком длинная, она будет обрезана.

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

Источник

Удалить файл php скрипты

Когда строишь какие-то системы для управления контентом на 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?»

Источник

Работа с директориями в PHP

Набор PHP функций для работы с директориями, получение списка файлов в папке, копирование и удаление содержимого папок.

Создать директорию

$dir = $_SERVER['DOCUMENT_ROOT'] . '/new_folder'; if (!is_dir($dir))

Получить список файлов директории в виде массива

То же самое делает функция scandir() , разница в том что у нее в массиве будут « . », « .. » и есть возможность сортировки.

function list_files($path) < if ($path[mb_strlen($path) - 1] != '/') < $path .= '/'; >$files = array(); $dh = opendir($path); while (false !== ($file = readdir($dh))) < if ($file != '.' && $file != '..' && !is_dir($path.$file) && $file[0] != '.') < $files[] = $file; >> closedir($dh); return $files; > print_r(list_files(__DIR__));

Результат:

Array ( [0] => favicon.ico [1] => index.php [2] => image.jpg [3] => robots.txt )

Удаление директории

Функция rmdir($dir) — удаляет заданную директорию только при условии, если она пуста.

$dir = $_SERVER['DOCUMENT_ROOT'] . '/new_folder'; rmdir($dir);

Удалить директорию со всем содержимым

function remove_dir($dir) < if ($objs = glob($dir . '/*')) < foreach($objs as $obj) < is_dir($obj) ? remove_dir($obj) : unlink($obj); >> rmdir($dir); > $dir = $_SERVER['DOCUMENT_ROOT'] . '/new_folder'; remove_dir($dir);

Удалить только содержимое директории

function clear_dir($dir, $rmdir = false) < if ($objs = glob($dir . '/*')) < foreach($objs as $obj) < is_dir($obj) ? clear_dir($obj, true) : unlink($obj); >> if ($rmdir) < rmdir($dir); >> $dir = $_SERVER['DOCUMENT_ROOT'] . '/new_folder'; clear_dir($dir);

Удалить файлы из директории, кроме некоторых

Например, нужно удалить все файлы, кроме файла .htaccess:

$dir = __DIR__ . '/cache'; $leave = array('index.html', '.htaccess'); foreach (glob($dir . '/*') as $file)

Копирование директории с ее содержимым

function copy_dir($src, $drc) < $dir = opendir($src); if (!is_dir($drc)) < mkdir($drc, 0777, true); >while (false !== ($file = readdir($dir))) < if ($file != '.' && $file != '..') < if (is_dir($src . '/' . $file)) < copy_dir($src . '/' . $file, $drc . '/' . $file); >else < copy($src . '/' . $file, $drc . '/' . $file); >> > closedir($dir); >

Комментарии 2

// Очистка директории
function dir_clear ($dir, $blacklist = []) function dir_clear_run($dir, $blacklist, $super_dir) $objs = glob($dir . '/*');
if (!$objs)
return;
foreach ($objs as $obj) // Проверка на наличие файла в чёрном списке
if (in_array(str_replace("$super_dir/", '', $obj), $blacklist))
continue;
// Удаление объекта
if (is_dir($obj)) dir_clear_run($obj, $blacklist, $super_dir);
rmdir($obj);
> else
unlink($obj);
>
>
dir_clear_run($dir, $blacklist, $dir);
>
// Создание каталога $drc и помещение в него копии содержимого каталога $src
function dir_copy($src, $drc, $blacklist = []) function dir_copy_run($src, $drc, $blacklist, $super_dir) $dir = opendir($src);
if (!is_dir($drc))
mkdir($drc, 0777, true);
while (true) $file = readdir($dir);
if ($file === false)
break;
if ($file == '.' || $file == '..')
continue;
// Проверка на наличие файла в чёрном списке
if (in_array(str_replace("$super_dir/", '', "$src/$file"), $blacklist))
continue;
if (is_dir("$src/$file"))
dir_copy_run("$src/$file", "$drc/$file", $blacklist, $super_dir);
else
copy("$src/$file", "$drc/$file");
>
closedir($dir);
>
dir_copy_run($src, $drc, $blacklist, $src);
>
$online = '/home/a/admin/apolshop.online/public_html';
$ru = '/home/a/admin/apolshop.ru/public_html';
// Проверка происходит относительно переданной директории в первом аргументе
// Значит можно указывать подпапки, например: 'products/resources/imgs'
$blacklist = [
'.htaccess',
'cgi-bin',
'imgs',
'service',
'test',
'staticValues.php'
];
dir_clear($ru, $blacklist); // Очистка .ru
dir_copy($online, $ru, $blacklist); // Копирование из .online в .ru
$fileList = array_diff( scandir( $dir ), array( '..', '.' ) );

Источник

Читайте также:  Знак разделить в питоне
Оцените статью