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.
Get PHP Cookbook now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.