19.11. Removing a Directory and Its Contents
Problem
You want to remove a directory and all of its contents, including subdirectories and their contents.
Solution
On Unix, use rm:
$directory = escapeshellarg($directory);
exec("rm -rf $directory");On Windows, use rmdir:
$directory = escapeshellarg($directory);
exec("rmdir /s /q $directory");Discussion
Removing files, obviously, can be dangerous. Be sure to escape
$directory with escapeshellarg( )
so that you don’t delete
unintended files.
Because PHP’s built-in directory removal function,
rmdir( )
, works only on empty directories, and
unlink( ) can’t accept shell
wildcards, calling a system program is much easier than recursively
looping through all files in a directory, removing them, and then
removing each directory. If an external utility
isn’t available, however, you can modify the
pc_process_dir( ) function from Recipe 19.10 to remove each subdirectory.
See Also
Documentation on rmdir( ) at
http://www.php.net/rmdir; your
system’s rm or
rmdir documentation, such as the Unix
rm(1) manpage or the Windows rmdir
/? help text.