所以我有这个函数,我用来递归删除文件和子目录。它也可以删除单个文件和一个文件数组,但这不是问题。一切正常,直到它必须删除目录,所有级别的文件都被删除,但文件夹不会。但是,如果不存在子目录,它将删除目标目录。不确定它是否是目录句柄问题,或者此时是什么。虽然这不是权限问题。
public static function delete($path, $files){
$dirHandle = opendir($path);
if($files === '*'){ //delete all files and subdirectories
foreach(glob("{$path}/*") as $file){
if(self::checkExist($file, 'folder')){
$pdp = dirname($file) . '/';
$file = basename($file);
self::delete($pdp, $file);
} else {
if(!unlink($file)){
//flash message: 'Sorry, something went wrong. Please contact an administrator.'
//log error couldnt delete file: $file
}
}
}
if(count(glob("{$path}/*.*", GLOB_BRACE)) === 0){
closedir($dirHandle);
if(!rmdir($path)){
//flash message: 'Sorry, something went wrong. Please contact an administrator.'
//log error couldnt remove directory: $path
}
}
return true;
}}
我还需要保留错误记录的检查和空间,我的整个类,始终保持此代码的“主题”。