note 96981 added to function.rmdir
| From: | kennethjor at gmail dot com | Date: | Thu, 25 Mar 2010 19:12:54 +0000 |
| Subject: | note 96981 added to function.rmdir | ||
| Groups: | php.notes | ||
| Request: | Send a blank email to php-notes+get-167418@lists.php.net to get a copy of this message | ||
Addition to bcairns', kevin's, and anonymous' below.
1. Add a directory separator to the dir always, otherwise $dir."*" might match sibling
directories. E.g. deleting /var/foo would turn into "/var/foo*" once it got to glob(),
meaning /var/foobar would also be history.
2. If it's a file, delete it right off the back before sending it to glob
3. If the directory doesn't exist, return false.
4. Make sure we don't EVER delete root
function delTree($dir) {
if (is_file($dir))
return unlink($file);
if (is_dir($dir) === false)
return false;
// Root ?
if (dirname($dir) == $dir)
die("Tried to delete root\n");
$files = glob( $dir . DIRECTORY_SEPARATOR . '*', GLOB_MARK );
foreach( $files as $file ){
if( is_dir( $file ) )
delTree( $file );
else
unlink( $file );
}
if (is_dir($dir))
rmdir( $dir );
}
----
Server IP: 78.110.173.36
Probable Submitter: 93.97.49.232
----
Manual Page -- http://www.php.net/manual/en/function.rmdir.php
Edit -- https://master.php.net/note/edit/96981
Del: integrated -- https://master.php.net/note/delete/96981/integrated
Del: useless -- https://master.php.net/note/delete/96981/useless
Del: bad code -- https://master.php.net/note/delete/96981/bad+code
Del: spam -- https://master.php.net/note/delete/96981/spam
Del: non-english -- https://master.php.net/note/delete/96981/non-english
Del: in docs -- https://master.php.net/note/delete/96981/in+docs
Del: other reasons-- https://master.php.net/note/delete/96981
Reject -- https://master.php.net/note/reject/96981
Search -- https://master.php.net/manage/user-notes.php