How to recursively delete a directory and its entire contents (files + sub dirs) in PHP?

01 Nov, 2019
In PHP if you want to delete the file or directory then keep one thing in mind that you cannot delete the file or directory directly there is a condition on that i.e. there are some security issues are there so the best way to do this is you first have to delete the data present in the file or the sub files or directories present in it . Then only you are able to delete the directory . And after deleting the sub directories or files use the rmdir function to delete the main directory.
PHP function to delete all files: In the following code, first passing the path of directory which need to delete. It checks whether the file or directory which need to delete is actually present/exist or not. If it does exist then it will open the file check whether there is something in that file or not. If not then delete the directory using rmdir directory. But if any other files are present in the directory if then it will delete the files using unlink function except the . and .. files which means the system files. After deleting all the stuff just use the rmdir function to delete the directory completely.
Example:
<?php  // Variable to store directory name// which need to delete$folder = 'temporary_files';  // Get the list of all of file names// in the folder.$files = glob($folder . '/*');  // Loop through the file listforeach($files as $file) {          // Check for file    if(is_file($file)) {                  // Use unlink function to         // delete the file.        unlink($file);    }}?>
Before Removing the files:
After Removing the files:
Description:
In this above example, deleting all files from a folder called “temp”.
List the files in this directory by using PHP glob function. The glob function basically “finds pathnames that match a certain pattern”. In this case, use a wildcard * (asterix) to select everything that is in the “temp” folder.
The glob function returns an array of file names that are in the specified folder.
Loop through this array.
Using the is_file function to check if it is a file and not a parent directory or a sub-directory.
Finally, use the unlink function, which deletes the file (if PHP has valid permissions – if not, an E_WARNING error will be thrown and the function will return a boolean FALSE value).
Delete all files and sub-directories in a directory: To delete all files and directories in all sub-directories, we can use recursion. Here is an example of a recursive PHP function that deletes every file and folder in a specified directory.
Example:
<?php  // Function to delete all files// and directoriesfunction deleteAll($str) {          // Check for files    if (is_file($str)) {                  // If it is file then remove by        // using unlink function        return unlink($str);    }          // If it is a directory.    elseif (is_dir($str)) {                  // Get the list of the files in this        // directory        $scan = glob(rtrim($str, '/').'/*');                  // Loop through the list of files        foreach($scan as $index=>$path) {                          // Call recursive function            deleteAll($path);        }                  // Remove the directory itself        return @rmdir($str);    }}   // Function calldeleteAll('temporary_files');   ?>
Output:
Before removing the directory:
After removing the directory: The directory is completely deleted.
The function checks if the $str variable represents a path to a file then it deletes the file using the function unlink. However, if $str represents a directory, then it gets a list of all files in said directory before deleting each one. Finally, it removes the sub-directory itself by using PHP rmdir function.
Akanksha_Rai
Picked
PHP
PHP Programs
Web Technologies
PHP
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
How to fetch data from localserver database and display on HTML table using PHP ?
Difference between HTTP GET and POST Methods
Different ways for passing data to view in Laravel
PHP | file_exists( ) Function
PHP | Ternary Operator
How to call PHP function on the click of a Button ?
How to fetch data from localserver database and display on HTML table using PHP ?
PHP | Ternary Operator
How to create admin login page using PHP?
How to send an email using PHPMailer ?