递归删除子目录php

时间:2016-08-06 05:51:05

标签: php recursion

所以我有这个函数,我用来递归删除文件和子目录。它也可以删除单个文件和一个文件数组,但这不是问题。一切正常,直到它必须删除目录,所有级别的文件都被删除,但文件夹不会。但是,如果不存在子目录,它将删除目标目录。不确定它是否是目录句柄问题,或者此时是什么。虽然这不是权限问题。

    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;
    }}

我还需要保留错误记录的检查和空间,我的整个类,始终保持此代码的“主题”。

0 个答案:

没有答案