Jump to content

Recommended Posts

Dear People,

 

Does any one know how to delete a folder completely (with or with out any content in it).

 

Situation I am having:

 

I upload 3 files into a new folder, and rename the folder.

I only see 3 files in it, yes it is correct, but when I see property of the folder, it says I have 4 files! ( I confirm I did not put any hidden files).

 

Now, the problem comes, when I delete the files. Since I know the exact name of the 3 files, I delete them, but when I want to remove the folder, complaint is the folder is not empty!

 

I all tricks I can, I can’t solve it, any one who could help me, thanks.

 

Link to comment
https://forums.phpfreaks.com/topic/52598-solved-deleting-not-empty-folder/
Share on other sites

<?php
function removeDirectory($dir) {
    if (!is_dir($dir)) return false;
    $handle = opendir($dir);
    while (($file = readdir($handle)) !== false) {
         if ($file == "." || file == "..") continue;
         if (is_dir($dir . DIRECTORY_SEPARATOR . $file)) removeDirectory($dir . DIRECTORY_SEPARATOR . $file);
         else unlink($dir . DIRECTORY_SEPARATOR . $file);
    }
    closedir($dir);
    rmdir($dir);
}
?>

While being almost the same as Glyde's, this works for me:

<?php
function delete_folder($folder)
{
if(!is_dir($folder))
{
	trigger_error("'{$folder}' is not a folder", E_USER_ERROR);
	return false;
}

$folder = str_replace('\\', '/', $folder);

if($folder[strlen($var)-1] == '/')
{
	$folder = substr($folder,0,strlen($folder)-1);
}

$dh = opendir($folder);
while($item = readdir($dh))
{
	if($item == '.' || $item == '..')
	{
		continue;
	}

	if(is_dir("{$folder}/{$item}"))
	{
		delete_folder("{$folder}/{$item}");
	}
	else {
		unlink("{$folder}/{$item}");
	}
}
closedir($dh);

return rmdir($folder);
}
?>

Heres the one i use

 

<?php
function recursive_remove_directory($directory, $empty=FALSE)
{
// if the path has a slash at the end we remove it here
if(substr($directory,-1) == '/')
{
	$directory = substr($directory,0,-1);
}

// if the path is not valid or is not a directory ...
if(!file_exists($directory) || !is_dir($directory))
{
	// ... we return false and exit the function
	return FALSE;

// ... if the path is not readable
}elseif(!is_readable($directory))
{
	// ... we return false and exit the function
	return FALSE;
// ... else if the path is readable
}else{

	// we open the directory
	$handle = opendir($directory);

	// and scan through the items inside
	while (FALSE !== ($item = readdir($handle)))
	{
		// if the filepointer is not the current directory
		// or the parent directory
		if($item != '.' && $item != '..')
		{
			// we build the new path to delete
			$path = $directory.'/'.$item;

			// if the new path is a directory
			if(is_dir($path)) 
			{
				// we call this function with the new path
				recursive_remove_directory($path);

				// if the new path is a file
			}else{
				// we remove the file
				unlink($path);
			}
		}
	}
	// close the directory
	closedir($handle);

	// if the option to empty is not set to true
	if($empty == FALSE)
	{
		// try to delete the now empty directory
		if(!rmdir($directory))
		{
			// return false if not possible
			return FALSE;
		}
	}
	// return success
	return TRUE;
}
}

?>

This thread is more than a year old. Please don't revive it unless you have something important to add.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.