На сервере приблизительно 30 сайтом и в каждой папке файлы с мусором (вирусом), я знаю размер и название файлов(они повторяются), пробвал написать код на PHP чтоб проверил каждую папку и удалил файл с параметрами "file_name" и "file_size"
Пробовал следующий код
rrmdir('site');
function rrmdir($dir){
$file_name = "406.php";
$file_size = 314;
if (is_dir($dir)){
if ($dh = opendir($dir)){
while (($file = readdir($dh)) !== false){
$file_delete = dirname(__FILE__) . $file;
unlink($file_delete);
}
closedir($dh);
}
}
}
Но получаю ошибку
Warning: unlink(site\lending.loc): Permission denied in on line site\lending.loc 12
задача следующая
Надо проверить все папки в указаной папке и удалить файлы с указаными параметрами - название и размер
Буду благодарный за помощь
Надо хотя бы добавить условие в цикле:
if($file == $file_name && filesize($dir.'/'.$file) == $file_size)
, чтобы проверить что файл вообще нужно удалять. и вот тут:
$file_delete = dirname(__FILE__) . $file;
dirname(FILE) указывает на директорию в которою лежит файл с методом. Т е читаете вы один файл, а удалить пытаетесь другой. Попробуйте так:
rrmdir('site');
function rrmdir($dir){
$file_name = "406.php";
$file_size = 314;
if (is_dir($dir)){
if ($dh = opendir($dir)){
while (($file = readdir($dh)) !== false){
if($file == $file_name && filesize($dir.'/'.$file) == $file_size){
$file_delete = $dir . '/' . $file;
unlink($file_delete);
}
}
closedir($dh);
}
}
}
Добавлю полностью код может кому понадобится
rrmdir('site'); /*папка где будет выполнятся действия*/
function rrmdir($dir){
if (is_dir($dir)) {
$objects = scandir($dir);
foreach ($objects as $object) {
if ($object != "." && $object != "..") {
if (filetype($dir."/".$object) == "dir"){
rrmdir($dir."/".$object);
}
else {
$file_name = "406.php"; /*Название файла*/
$file_size = 314; /*Размер файла в байтах*/
if (is_dir($dir)){
if ($dh = opendir($dir)){
while (($file = readdir($dh)) !== false){
if($file == $file_name && filesize($dir.'/'.$file) == $file_size){
$file_delete = $dir . '/' . $file;
unlink($file_delete);
}
}
closedir($dh);
}
}
}
}
}
}
}
Дешево и сердито: в командной строке:
find -type f -name '406.php' -size 314c -exec rm -f {} \;
Если не умеете в консоли, сделайте скриптик del.php
, но должна быть включена функция shell_exec:
`find -type f -name '406.php' -size 314c -exec rm -f {} \;`;
Виртуальный выделенный сервер (VDS) становится отличным выбором
Что посоветуете, как узнать, какое номер присвоит поле id в базе данных при добавление нового idЯ добавляю новые данные из формы в таблицу, далее...
Можно ли как то корректно получить данные с таблицы строки которой выводятся циклом php из mysql?