Search code examples
phprmdir

How to remove folder with PHP?


I can create a image folder when I create a category, so that I can upload images there.

Now I want to delete that folder when I delete the category.

Code for creating a folder is the following and works well.

function create(){
if ($this->input->post('name')){
    $this->MCats->addCategory();
    $folder = $this->input->post('name');
    $folder = strtolower($folder);
    $folder = str_replace(" ", "_", $folder);
    $folder = 'images/'.$folder;
    $this->_create_path($folder);
...
...
}


function _create_path($folder)
{
    // create dir if not exists
    $folder = explode( "/" , $folder );
    $mkfolder = "";
    //sets the complete directory path
    for(  $i=0 ; isset( $folder[$i] ) ; $i++ )
    {
        $mkfolder .= $folder[$i] . '/';
        if(!is_dir($mkfolder )) mkdir("$mkfolder");
    }
}

And I come up with the following code. But I am not sure how to use rmdir so that it will not remove images folder. I want to remove only child of images folder.

function delete($id){

$cat = $this->MCats->getCategory($id);
    // This will pull the name of category name.
$catname = $cat['name'];
$catname = strtolower($catname);
$catname = str_replace(" ", "_", $catname);
$catname = 'images/'.$catname;
    $this->_remove_path($catname);
...
...
}
function _remove_path($folder)
{

}

I am not sure how to proceed after this.

Can anyone give me some suggestions please?


Solution

  • $this->_remove_path($catname); // because previous parts you're using $catname
    

    Then the remove path function

    // recursively remove all files and sub-folder in that particular folder
    function _remove_path($folder){
        $files = glob( $folder . DIRECTORY_SEPARATOR . '*');
        foreach( $files as $file ){
            if($file == '.' || $file == '..'){continue;}
            if(is_dir($file)){
                $this->_remove_path( $file );
            }else{
                unlink( $file );
            }
        }
        rmdir( $folder ); 
    }