Removing directories completely

Have a question or a suggestion about a 3rd party addon module or plugin?
Let us know here.
Post Reply
Der Rudi
Forum Members
Forum Members
Posts: 56
Joined: Wed May 17, 2006 7:42 pm

Removing directories completely

Post by Der Rudi »

It does happen that one deletes, or tries to delete the complete cmsms installation with a ftp client. This works, with a few exections like the uploads directory. These can be deleted with the following php file (code found on lixlpixel). Name the php file recdir.php, save in root of site and point your browser to it. At the end of the code, one can define the directory to delete. It is very likely that the actual removal of the empty directory is not possible due to user restrictions. When this happens just delete the now empty directory from the ftp client, that worked for me at least! If everything fails, ask the webhoster to delete the directories for you (they should have root access to do this).

Code: Select all

<?php

// ------------ lixlpixel recursive PHP functions -------------
// recursive_remove_directory( directory to delete, empty )
// expects path to directory and optional TRUE / FALSE to empty
// of course PHP has to have the rights to delete the directory
// you specify and all files and folders inside the directory
// ------------------------------------------------------------

// to use this function to totally remove a directory, write:
// recursive_remove_directory('path/to/directory/to/delete');

// to use this function to empty a directory, write:
// recursive_remove_directory('path/to/full_directory',TRUE);

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);
	}
	echo "deleting directory: '".$directory."'<br />";
	// if the path is not valid or is not a directory ...
	if(!file_exists($directory) || !is_dir($directory)) {
		// ... we return exitcode and exit the function
		return 1;
	}
	// ... if the path is not readable
	elseif(!is_readable($directory)) {
		// ... we return exitcode and exit the function
		return 2;
	}
	// ... 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
					echo "deleting file: '".$path."'<br />";
					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 exitcode if not possible
				return 3;
			}
		}
		// return success
		return 0;
	}
}
// ------------------------------------------------------------

// the directory to remove
$recdir = 'modules';

switch (@recursive_remove_directory($recdir)) {
case 0:
	echo "Directory '".$recdir."' succesfully removed";
	break;
case 1:
	echo "Directory '".$recdir."' is not valid or is not a directory ...";
	break;
case 2:
	echo "Directory '".$recdir."' is not readable ...";
	break;
case 3:
	echo "Directory '".$recdir."' could NOT be removed. Might be a rights problem ...";
	break;
}
echo '<br />';
?>
Last edited by Der Rudi on Tue Sep 05, 2006 12:34 pm, edited 1 time in total.
Post Reply

Return to “Modules/Add-Ons”