为什么当目录为空时glob()返回FALSE?

时间:2012-12-10 21:21:07

标签: php arrays glob

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

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

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

为什么结果false而不是空数组()?

4 个答案:

答案 0 :(得分:2)

  • 您很可能没有my_folder的权限。

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

  

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

如果后者属于你的情况,我建议你回到“classic”的方式来做到这一点:

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

使用:

opendir(), readdir(), closedir()

答案 1 :(得分:1)

当出现错误时,PHP Manualglob会返回FALSE。你没有得到一个空数组,因为有一个错误。

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

  • 你没有文件/文件夹的权限(好吧,www-data没有权限,即是)
  • 你输错了什么
  • 您正在尝试处理远程文件(不受支持)
  • 你正在使用一个没有它的旧系统(例如,非常古老的S OS)

答案 2 :(得分:0)

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

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

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

答案 3 :(得分:0)

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

  

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