检查 PHP 中是否存在目录

2022-08-30 17:01:08

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

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

有什么想法吗?


答案 1

应该可以正常工作。从文档中:is_dir()

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

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

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

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


答案 2

在is_dir() 同意路径(可以是)是一个目录之后,您可能希望使用 opendir()。

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

只要确保调用 closedir(),无论哪种方式,如果返回一个有效的句柄。

编辑:

此答案假定您将以任何一种方式打开目录。如果你只需要确保一条路径是理智的/有效的,file_exists()要便宜得多。


推荐