PHP glob() if empty 在 Windows 上返回数组,在 Linux 上返回 Array


php glob() if empty returns array on windows, none on linux

目前我有:

$files = array_merge(
        glob($path_ . '*.js'),
        glob($path_ . '*.css'));

如果窗口上的目录为空,则返回一个空数组。如果它们在 Linux 上为空,则不会返回任何内容。

这会在 Linux 上产生此错误:警告:array_merge() [function.array-merge]:参数 #1 不是数组

  • 视窗: 阿帕奇:2.2.21 PHP:5.3.10
  • Linux/Debian: Apache:2.2.16 PHP:5.3.10

经过进一步的研究和测试,我发现它是PHP中的一个错误:https://bugs.php.net/bug.php?id=53460

从 http://php.net/manual/en/function.glob.php:

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

检查 Linux 上是否glob($path_ . '*.js') === FALSE。在这种情况下,可能存在权限错误或类似的东西。如果没有错误,它应该是一个空数组,如文档所示。

还要检查文件/目录中的大小写。Windows不区分大小写,这可以解释Windows和Linux之间的差异。