[英]unable to delete a last file in folder while deleting folder using php
我正在從其他網站調用我的php函數,該網站會在后台刪除服務器上的文件夾。
這是我用來刪除文件夾的功能。
public static function remove($dir)
{
if (is_dir($dir)) {
$diropen = opendir($dir);
while($d = readdir($diropen)) {
if ($d!= '.' && $d != '..') {
self::remove($dir . "/$d");
}
}
@rmdir($dir);
} elseif (is_file($dir)) {
@unlink($dir);
}
}
如果我的文件夾中有三個文件,則它將僅刪除兩個文件,並且無法刪除最后一個文件,或者無法對最后一個文件進行取消鏈接。
如果我有兩個文件,那么它只會刪除一個文件。
我已經使用is_writable
檢查了可寫權限,所有文件都為true。
有人可以幫我嗎。 或在后台調用此函數時如何調試此行為。
我的目錄是在一些其他的功能,開放的,所以我closedir
我的文件夾,然后上面的函數工作正常。
<?php
function delete_directory($target) {
if (is_dir($target))
$dir_handle = opendir($target);
if (!$dir_handle)
return false;
while($file = readdir($dir_handle)) {
if ($file != "." && $file != "..") {
if (!is_dir($dirname."/".$file))
unlink($dirname."/".$file);
else
delete_directory($target.'/'.$file);
}
}
closedir($dir_handle);
rmdir($target);
return true;
}
?>
使用closedir,您會沒事的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.