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 />';
?>