The manual says that one should only call closedir with a parameter which is an open directory handle.
The manual usually lists warnings and errors generated by violating a "should" or "shouldn't", but doesn't for this case.
In fact, one gets the runtime error
Warning: closedir(): supplied argument is not a valid Directory resource in whatever.php on line nn
irrespective of whether it's an already-closed directory handle or whether it's total junk.
[Different error messages would have spared me a little debugging. Sigh. It would be nice if the manual said.]
closedir
(PHP 4, PHP 5)
closedir — Close directory handle
Description
void closedir
([ resource $dir_handle
] )
Closes the directory stream indicated by dir_handle . The stream must have previously been opened by opendir().
Parameters
- dir_handle
-
The directory handle resource previously opened with opendir(). If the directory handle is not specified, the last link opened by opendir() is assumed.
Examples
Example #1 closedir() example
<?php
$dir = "/etc/php5/";
// Open a known directory, read directory into variable and then close
if (is_dir($dir)) {
if ($dh = opendir($dir)) {
$directory = readdir($dh);
closedir($dh);
}
}
?>
closedir
lester.k at virgin.com
22-Feb-2008 08:27
22-Feb-2008 08:27
foo at bar dot com
24-Nov-2000 08:35
24-Nov-2000 08:35
About deleting a directory after doing a readdir/closedir on it... I'm not sure if this is the solution, but you could try to chdir("/"); before the rmdir to make absolutely sure you aren't standing in the directory (i.e trying to pull out the rug from under yourself).
