无法使用 rmdir 功能删除文件夹
Cannot delete folder using with rmdir function
我在删除文件夹路径中的选定文件夹时遇到问题。我使用的是XAMPP,并不会删除选择的文件夹路径是C:\xampp\htdocs\delete_folder\test\abc
,但是下面的代码无法删除文件夹。我认为是因为 abc
文件夹中有另一个文件夹。
我指的是 link 来执行 rmdir 功能:https://www.php.net/manual/zh/function.rmdir.php
下面是index.php中的示例代码,这意味着每次我刷新页面时,如果可以删除所选文件夹:
<?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);
}
?>
希望有人能指导我如何解决这个问题。谢谢
Windows shell/cmd 有一个命令 rmdir
可以删除包含内容的文件夹。使用
exec('rmdir FOLDERNAME /s /q');
在Windows上打开一个shell/cmd并输入rmdir /?
,你会看到参数的解释:
/s
删除包含内容的文件夹
/q
不会要求确认。
慎用!
你的代码是这样写的,你期待的是:
$dir ="test/abc";
将名称 test/abc
传递给您的函数
开头为:
function deleteDirectory($dir) {
并执行函数?这不是函数的工作方式。
$dir
是一个函数参数,与
您在它之前定义的 $dir
。您的代码应该更像:
<?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");
?>
看到了吗?该函数已定义,然后它会使用所需的参数进行调用。
(我希望我的 php 语法在这里是正确的,我很少使用 php。但总体思路在所有语言中都是相同的)
我在删除文件夹路径中的选定文件夹时遇到问题。我使用的是XAMPP,并不会删除选择的文件夹路径是C:\xampp\htdocs\delete_folder\test\abc
,但是下面的代码无法删除文件夹。我认为是因为 abc
文件夹中有另一个文件夹。
我指的是 link 来执行 rmdir 功能:https://www.php.net/manual/zh/function.rmdir.php
下面是index.php中的示例代码,这意味着每次我刷新页面时,如果可以删除所选文件夹:
<?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);
}
?>
希望有人能指导我如何解决这个问题。谢谢
Windows shell/cmd 有一个命令 rmdir
可以删除包含内容的文件夹。使用
exec('rmdir FOLDERNAME /s /q');
在Windows上打开一个shell/cmd并输入rmdir /?
,你会看到参数的解释:
/s
删除包含内容的文件夹
/q
不会要求确认。
慎用!
你的代码是这样写的,你期待的是:
$dir ="test/abc";
将名称 test/abc
传递给您的函数
开头为:
function deleteDirectory($dir) {
并执行函数?这不是函数的工作方式。
$dir
是一个函数参数,与
您在它之前定义的 $dir
。您的代码应该更像:
<?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");
?>
看到了吗?该函数已定义,然后它会使用所需的参数进行调用。 (我希望我的 php 语法在这里是正确的,我很少使用 php。但总体思路在所有语言中都是相同的)