Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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

Tags:

php

apache

glob

At the moment I have:

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

If the directories are empty on windows it returns an empty array. If they are empty on linux nothing is returned.

This produces this error on linux: Warning: array_merge() [function.array-merge]: Argument #1 is not an array

  • Windows: Apache:2.2.21 PHP:5.3.10
  • Linux/Debian: Apache:2.2.16 PHP:5.3.10

After some further research and testing I found that it is a bug in PHP: https://bugs.php.net/bug.php?id=53460

like image 751
John Magnolia Avatar asked Oct 09 '22 04:10

John Magnolia


1 Answers

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

Returns an array containing the matched files/directories, an empty array if no file matched or FALSE on error.

Check if glob($path_ . '*.js') === FALSE on linux. In this case, there is probably a permission error or something like this. It should be an empty array if there is no error, as the documentation suggests.

Also check for the case in your files/directory. Windows is case insensitive, that could explain a difference between windows and linux.

like image 98
Benjamin Crouzier Avatar answered Oct 12 '22 01:10

Benjamin Crouzier