检查目录是否存在于PHP中

时间:2009-04-14 07:45:44

标签: php file-io

我知道,我知道,这听起来很简单 soo 。但我似乎无法在互联网上找到正确的答案。

我找到的解决方案之一是使用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服务器上找不到此类目录。

有什么想法吗?

4 个答案:

答案 0 :(得分:53)

应该正常工作。来自is_dir()文档:

  

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

好吧,无论如何,如果它没有尝试这个:

if(file_exists($dir) && is_dir($dir))

顺便说一句。这些函数的结果缓存在stat缓存中。使用clearstatcache()清除该缓存。

答案 1 :(得分:2)

在is_dir()同意路径(可能)是目录之后,您可能想要使用opendir()

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

如果返回有效的句柄,请确保以任何一种方式调用closedir()。

编辑:

这个答案假定您将以任一方式打开目录。如果你只需要确保路径是健全/有效的,那么file_exists()要便宜得多。

答案 2 :(得分:0)

你可以试试这个:

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

答案 3 :(得分:0)

bool file_exists ( string $filename )

检查文件或目录是否存在。

http://php.net/manual/en/function.file-exists.php