How do I check if a directory exists? “is_dir”, “file_exists” or both?

后端 未结 11 1607
礼貌的吻别
礼貌的吻别 2020-11-28 18:36

I want to create a directory if it does\'nt exist already.

Is using is_dir enough for that purpose?

if ( !is_dir( $dir ) ) {
    mkdir(          


        
11条回答
  •  孤城傲影
    2020-11-28 19:25

    Second variant in question post is not ok, because, if you already have file with the same name, but it is not a directory, !file_exists($dir) will return false, folder will not be created, so error "failed to open stream: No such file or directory" will be occured. In Windows there is a difference between 'file' and 'folder' types, so need to use file_exists() and is_dir() at the same time, for ex.:

    if (file_exists('file')) {
        if (!is_dir('file')) { //if file is already present, but it's not a dir
            //do something with file - delete, rename, etc.
            unlink('file'); //for example
            mkdir('file', NEEDED_ACCESS_LEVEL);
        }
    } else { //no file exists with this name
        mkdir('file', NEEDED_ACCESS_LEVEL);
    }
    

提交回复
热议问题