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

时间:2019-04-30 21:31:10

标签: php file-search

我需要从网站上复制内容以创建另一个系统,因为主题不断被黑客入侵。黑客不断放置一个.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文件。

2 个答案:

答案 0 :(得分:0)

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

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

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

答案 1 :(得分:0)

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

您可以尝试以下操作:

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 ...

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