File / PHP · November 20, 2015 2

Delete files and folders recursively using PHP

unlinkr function recursively deletes all the folders and files in given path by making sure it doesn’t delete the script itself.

    function unlinkr($dir, $pattern = "*") {
        // find all files and folders matching pattern
        $files = glob($dir . "/$pattern"); 

        //interate thorugh the files and folders
        foreach($files as $file){
        //if it is a directory then re-call unlinkr function to delete files inside this directory
            if (is_dir($file) and !in_array($file, array('..', '.')))  {
                echo "

opening directory $file 

";
                unlinkr($file, $pattern);
                //remove the directory itself
                echo "

 deleting directory $file 

";
                rmdir($file);
            } else if(is_file($file) and ($file != __FILE__)) {
                // make sure you don't delete the current script
                echo "

deleting file $file 

";
                unlink($file);
            }
        }
    }

if you want to delete all files and folders where you place this script then call it as following

    //get current working directory
    $dir = getcwd();
    unlinkr($dir, "*");

if you want to just delete the php files then call it as following

    unlinkr($dir, "*.php");

you can use any other path to delete the files as well

    unlinkr("/home/user/temp", "*");


This will delete all files in home/user/temp directory.