I have a problem deleting the selected folder in the folder path. I am using XAMPP, and won't delete the selected folder path is C:\xampp\htdocs\delete_folder\test\abc
, but the below coding is cannot work to delete the folder. I think because inside the abc
folder got another folder.
I am referring to this link to do the rmdir function: https://www.php.net/manual/zh/function.rmdir.php
Below is a sample coding in the index.php, that mean every time I am refreshing the page, if work it can delete the selected folder:
<?php
$dir ="test/abc";
function deleteDirectory($dir) {
if (!file_exists($dir)) {
return true;
}
if (!is_dir($dir)) {
return unlink($dir);
}
foreach (scandir($dir) as $item) {
if ($item == '.' || $item == '..') {
continue;
}
if (!deleteDirectory($dir . DIRECTORY_SEPARATOR . $item)) {
return false;
}
}
return rmdir($dir);
}
?>
Hope someone can guide me on how to solve this problem. Thanks.
The way your code is written, are you expecting the line:
$dir ="test/abc";
To pass the name test/abc
to your function that
starts with:
function deleteDirectory($dir) {
and execute the function? That is not the way functions work.
The $dir
is a function argument and has absolutely no relationship with
the $dir
you defined just before it. Your code should look more like:
<?php
function deleteDirectory($dir) {
if (!file_exists($dir)) {
return true;
}
if (!is_dir($dir)) {
return unlink($dir);
}
foreach (scandir($dir) as $item) {
if ($item == '.' || $item == '..') {
continue;
}
if (!deleteDirectory($dir . DIRECTORY_SEPARATOR . $item)) {
return false;
}
}
return rmdir($dir);
}
deleteDirectory("test/abc");
?>
See? The function is defined, then it gets call with the desired argument. (I hope my php syntax is correct here, I rarely use php. But the general idea is the same in all languages)