【问题标题】:Check whether a directory exists in PHP检查PHP中是否存在目录
【发布时间】:2009-04-14 07:45:43
【问题描述】:

我知道,我知道,这听起来 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 服务器上找不到这样的目录。

有什么想法吗?

【问题讨论】:

  • 这是 php 5.2 中报告的错误,但我无法再找到错误报告的链接。

标签: php file-io


【解决方案1】:

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

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

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

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

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

【讨论】:

    【解决方案2】:

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

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

    如果返回有效句柄,请务必调用 closedir()。

    编辑:

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

    【讨论】:

      【解决方案3】:
      bool file_exists ( string $filename )
      

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

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

      【讨论】:

        【解决方案4】:

        你可以试试这个:

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

        【讨论】:

        • 不能解决问题,因为不可写目录也是目录。
        猜你喜欢
        • 2022-12-01
        • 2018-10-01
        • 2010-11-23
        • 2014-01-11
        • 2013-05-19
        • 2012-09-12
        • 1970-01-01
        相关资源
        最近更新 更多