我想创建一个目录,如果它不存在。

使用is_dir函数就足够了吗?

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

或者我应该结合is_dir与file_exists?

if ( !file_exists( $dir ) && !is_dir( $dir ) ) {
    mkdir( $dir );       
} 

当前回答

我也有同样的疑问,但请参阅PHP文档:

https://www.php.net/manual/en/function.file-exists.php

https://www.php.net/manual/en/function.is-dir.php

您将看到is_dir()具有这两个属性。

返回值is_dir 如果文件名存在且为目录,则返回TRUE,否则返回FALSE。

其他回答

$save_folder = "some/path/" . date('dmy');

if (!file_exists($save_folder)) {
   mkdir($save_folder, 0777);
}

第二个变量在问题post是不行的,因为,如果你已经有同名的文件,但它不是一个目录,!file_exists($dir)将返回false,文件夹将不会被创建,所以错误“failed to open stream: No such file or directory”将会发生。在Windows中,'文件'和'文件夹'类型是不同的,因此需要同时使用file_exists()和is_dir(),例如:

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

我就是这么做的

if(is_dir("./folder/test"))
{
  echo "Exist";
}else{
  echo "Not exist";
}

我也有同样的疑问,但请参阅PHP文档:

https://www.php.net/manual/en/function.file-exists.php

https://www.php.net/manual/en/function.is-dir.php

您将看到is_dir()具有这两个属性。

返回值is_dir 如果文件名存在且为目录,则返回TRUE,否则返回FALSE。

我认为这是dir检查的快速解决方案。

$path = realpath($Newfolder);
if (!empty($path)){
   echo "1";
}else{
   echo "0";
}