检查PHP中是否存在目录

检查PHP中是否存在目录,php,file-io,Php,File Io,我知道,我知道,这听起来很简单。但是我似乎在网上找不到正确的答案 我找到的解决方案之一是使用is_dir if(is_dir($dir)) echo 'directory exists'; else echo 'drectory not exist'; 但是这是错误的——这个函数所做的只是检查$dir是否是一个目录,它不检查目录是否存在。换言之,如果我提出: $rootDir = "C:\\Documents and Settings\\test\\My Documents\\Imag

我知道,我知道,这听起来很简单。但是我似乎在网上找不到正确的答案

我找到的解决方案之一是使用
is_dir

if(is_dir($dir))
  echo 'directory exists';
else
  echo 'drectory not exist';
但是这是错误的——这个函数所做的只是检查
$dir
是否是一个目录,它不检查目录是否存在。换言之,如果我提出:

$rootDir = "C:\\Documents and Settings\\test\\My Documents\\Image Directory\\Me Dog\\";
然后,该函数将返回true,即使您在web服务器上找不到这样的目录


有什么想法吗?

应该是正确的。从
is_dir()
文档:

如果文件名存在,则返回TRUE 并且是一个目录,FALSE 否则

好吧,不管怎样,如果它不尝试这个:

if(file_exists($dir) && is_dir($dir))
if(is_dir($dir) && is_writeable($dir))
{
    // ...
}

顺便说一句,这些函数的结果缓存在statcache中。用于清理该缓存。

在is_dir()同意路径(可以)是目录后,您可能会希望使用该路径

如果opendir()返回的资源有效,您就知道您有一个目录,并且已经有了一个句柄来读取它

只要确保在返回有效句柄的情况下调用closedir()

编辑:

这个答案假设您将以任何方式打开目录。如果您只需要确保路径正确/有效,则file_exists()更便宜。

您可以尝试以下方法:

if(file_exists($dir) && is_dir($dir))
if(is_dir($dir) && is_writeable($dir))
{
    // ...
}
检查文件或目录是否存在


这不是问题的解决方案,因为不可写目录也是目录。这是PHP5.2中报告的错误,尽管我再也找不到错误报告的链接。