>  기사  >  백엔드 개발  >  PHP rmdir()을 사용하여 비어 있지 않은 디렉토리를 삭제하는 방법

PHP rmdir()을 사용하여 비어 있지 않은 디렉토리를 삭제하는 방법

青灯夜游
青灯夜游원래의
2021-10-09 18:12:593841검색

삭제 방법: 1. scandir() 함수와 foreach 문을 사용하여 지정된 디렉터리의 모든 파일과 폴더를 탐색합니다. 2. 재귀 방법을 사용하여 지정된 디렉터리의 모든 파일과 폴더를 하나씩 삭제하여 디렉터리를 비어 있게 만듭니다. 3. "rmdir(디렉터리 경로)" 문을 사용하여 지정된 디렉터리를 삭제합니다.

PHP rmdir()을 사용하여 비어 있지 않은 디렉토리를 삭제하는 방법

이 튜토리얼의 운영 환경: Windows 7 시스템, PHP 버전 7.1, DELL G3 컴퓨터

PHP에서는 rmdir() 함수를 사용하여 지정된 디렉터리를 삭제할 수 있습니다.

rmdir(string $dirname[, resource $context])

그 중 $dirname 매개변수는 삭제할 디렉터리 경로이고, $context는 파일 핸들의 환경을 지정하는 데 사용되는 선택적 매개변수입니다.

참고: rmdir() 함수를 사용하여 지정된 디렉터리를 삭제하는 경우 해당 디렉터리는 비어 있어야 하며 해당 권한이 있어야 합니다. 함수가 성공적으로 실행되면 TRUE가 반환되고, 실행이 실패하면 FALSE가 반환됩니다. 비어 있지 않은 디렉터리가 삭제되면 E_WERNING 수준 오류가 생성됩니다.

그래서 비어 있지 않은 디렉토리를 삭제하기 위해 rmdir()을 사용해야 한다면 어떻게 해야 할까요?

이 디렉터리의 모든 파일과 폴더를 순회하고 이 디렉터리의 모든 파일과 폴더를 하나씩 재귀적으로 삭제할 수 있습니다. 다음은 샘플 코드를 통해 설명됩니다.

<?php
    function deldir($path){
        //如果是目录则继续
        if(is_dir($path)){
            //扫描一个文件夹内的所有文件夹和文件并返回数组
            $p = scandir($path);
            //如果 $p 中有两个以上的元素则说明当前 $path 不为空
            if(count($p)>2){
                foreach($p as $val){
                    //排除目录中的.和..
                    if($val !="." && $val !=".."){
                        //如果是目录则递归子目录,继续操作
                        if(is_dir($path.$val)){
                            //子目录中操作删除文件夹和文件
                            deldir($path.$val.&#39;/&#39;);
                        }else{
                            //如果是文件直接删除
                            unlink($path.$val);
                        }
                    }
                }
            }
        }
        //删除目录
        return rmdir($path);
    }
    //设置需要删除的文件夹
    $path = "./test/";
    //调用函数,传入路径
    deldir($path);
?>

지침:

scandir () 함수

추천 학습: "PHP 비디오 튜토리얼"

위 내용은 PHP rmdir()을 사용하여 비어 있지 않은 디렉토리를 삭제하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.