【问题标题】:Why does glob() returns FALSE when the directory is empty? [closed]为什么当目录为空时 glob() 返回 FALSE? [关闭]
【发布时间】:2012-12-10 21:21:07
【问题描述】:

我有一个名为 my_folder 的空文件夹:

$mas = glob("my_folder/*");
var_dump($mas);

如果在my_folder我有文件,结果是一个数组,但是如果my_folder为空,结果是false

为什么结果是false 而不是一个空的array()?

【问题讨论】:

  • 因为出现错误
  • false 表示错误。查看服务器的错误日志文件。
  • 如果在my_folder我有文件,结果是array,但是如果my_folder是空的,结果是false...
  • "在某些系统上,无法区分空匹配和错误。" -- 可能与此有关,但我不知道它会影响哪些系统。
  • 我最初投票决定关闭,但您的最后一条评论有助于理解问题,因此我将其添加到您的帖子中并给了您一个支持,即使这是在手册中:“在某些系统无法区分空匹配和错误。"...当然,但是是什么原因导致的呢?它必须是特定的,对吧?我很想知道。

标签: php arrays glob


【解决方案1】:
  • 很可能您没有my_folder 的权限。

  • 也可能是因为(来自 PHP 手册):

在某些系统上,无法区分空匹配和错误。

如果你是后者,我建议你回退到“classic”的方式来做到这一点:

while (false !== ($entry = readdir($handle))) {
        echo "$entry\n";
}

使用:

opendir(), readdir(), closedir()

【讨论】:

  • 谢谢,正如我所见,在这种情况下,“经典”方式真的很经典 =)
  • 我如何找出 为什么 opendirreaddir 失败?由于某种原因,这在服务器上不起作用;它适用于我的电脑。它就像服务器上运行的 Apache 帐户的权限问题,但它被明确授予了我尝试读取的文件夹的权限。
【解决方案2】:

PHP Manual 表示 glob 在出现错误时返回 FALSE。你没有得到一个空数组,因为有一个错误。

以下是glob 的一些常见错误:

  • 您没有文件/文件夹的权限(嗯,www-data 没有权限,也就是说)
  • 你打错了什么
  • 您正在尝试处理远程文件(不支持)
  • 您正在使用没有它的旧系统(例如,非常旧的 S OS)

【讨论】:

    【解决方案3】:

    返回值: 返回一个包含匹配文件/目录的数组,如果没有匹配的文件则返回一个空数组或 FALSE 错误

    注意: 在某些系统上,无法区分空匹配和错误。

    检查这两点与您和您的特定平台无关。

    【讨论】:

      【解决方案4】:

      来自返回值部分下的PHP glob manual page

      返回一个包含匹配文件/目录的数组,如果没有文件匹配,则返回一个空数组,或者错误时返回 FALSE。

      【讨论】:

        猜你喜欢
        • 2011-05-22
        • 2021-09-23
        • 2023-01-13
        • 2020-10-01
        • 2019-05-16
        • 1970-01-01
        • 1970-01-01
        • 2013-01-20
        • 1970-01-01
        相关资源
        最近更新 更多