使用 PHP 搜索文件以查找特定文件并快速删除它们

using PHP to search files to find certain files and delete them fast

我需要从我的网站上复制内容以创建另一个系统,因为主题不断被黑客入侵。黑客不断放置一个 .ico 文件,该文件是恶意软件...

所以我需要创建一个 php 文件,它将始终搜索未命名的文件 favicon.ico 并在找到它们时将其删除。

有没有一种快速的方法可以在 public_html 中的每个目录中搜索隐藏并命名为:.*.ico 的文件? 他们似乎开始于 . 然后不同的名字 然后.ico

总是这样:.*.ico

但未命名:favicon.ico 因此,只需一个代码即可删除 public_html 中使用 PHP 的所有名为 .ico 但未命名为 favicon.ico

的文件

我认为取消链接会起作用,但如何让它不被删除 favicon.ico?

有人知道吗? 我几乎完成了复制所有内容以创建一个不同的网站并删除整个网站并将域移动到新服务器,因此它不会再被黑客攻击......但它一直被黑客攻击所以我必须创建一个 cron 作业继续寻找要删除的 .ico 文件。

如果您能指出正确的方向,请提前致谢。 :)

我一直在网上搜索操作方法,但没有找到。需要快速获取它,因为它每隔几个小时就会被黑客入侵。

unlink("/home/path/public_html/*.ico");
//Deletes favicon.ico too... right?

没有测试,因为我认为它会删除我不想删除的 ico 文件。

unlink()这样的函数需要一个准确的路径名,它们不会自动扩展通配符。

使用 glob() 获取匹配模式的文件列表,然后您可以使用 array_map() 为每个文件调用函数。

array_map('unlink', glob("/home/path/public_html/*.ico"));

我认为你需要一个递归脚本来执行工作...

你可以试试这个:

function listFolderFiles($dir){
    $ffs = scandir($dir);

    unset($ffs[array_search('.', $ffs, true)]);
    unset($ffs[array_search('..', $ffs, true)]);


    $search_text = '.ico';

    array_filter($ffs, function($el) use ($search_text) {
        return ( strpos($el['text'], $search_text) !== false );
    });

    // prevent empty ordered elements
    if (count($ffs) < 1)
        return;

    echo '<ol>';
    foreach($ffs as $ff){
        echo '<li>'.$ff;
        if(is_dir($dir.'/'.$ff)) listFolderFiles($dir.'/'.$ff);
        echo '</li>';
    }
    echo '</ol>';
}

listFolderFiles('Main Dir'); //your directory ...

检查输出是否是您需要的...并将取消链接添加到列出的路径和文件...