Edit report at http://bugs.php.net/bug.php?id=53460&edit=1
ID: 53460
User updated by: cameel2+php at gmail dot com
Reported by: cameel2+php at gmail dot com
Summary: glob() returns false for a pattern that matches zero
files
-Status: Feedback
+Status: Open
Type: Bug
Package: Filesystem function related
Operating System: Arch Linux
PHP Version: 5.3.3
Block user comment: N
Private report: N
New Comment:
Yeah, I meant that since I tested it under Apache first and that
directory is located in /srv/http, i.e. in the root directory of the
server.
But you're right - for php being run from command line I should have
used relative path. Still, when I remove the leading slash and run
cd /srv/http; php test.php
the result is still false.
This is a contrived example anyway. Originally I have noticed it in a
more complex path.
If I do
touch /srv/http/phpMyAdmin/a.file
the script starts printing 'array'.
Previous Comments:
------------------------------------------------------------------------
[2010-12-03 12:53:57] [email protected]
Are you sure you mean $glob = glob('/phpMyAdmin/*'); and not $glob =
glob('phpMyAdmin/*');? The sooner is an absolute path '/phpMyAdmin/',
where the 2nd path is relative (to CWD).
------------------------------------------------------------------------
[2010-12-03 05:56:59] cameel2+php at gmail dot com
Description:
------------
On my system the glob() returns false if there are no files matching the
pattern even though the documentation
(http://php.net/manual/en/function.glob.php) states that it should
return an empty array.
PHP version: 5.3.3
The only things I have changed in php.ini are open_basedir
(/srv/http/:/home/:/usr/share/webapps:/etc/webapps:/tmp/:/usr/share/pear/:/usr/share/symfony)
and enabling of several extensions (mcrypt, mysql, pdo, pdo_sqlite).
I've seen similar bugs reported and closed a few years ago: #29928
Test script:
---------------
<?php
// phpMyAdmin is an empty, existing directory located in Apache
root
$glob = glob('/phpMyAdmin/*');
echo $glob == false ? "false\n" : "";
echo is_array($glob) ? "array\n" : "";
?>
Expected result:
----------------
glob() should return an empty array if no files match the pattern.
Actual result:
--------------
The script prints 'false' when run on my box (both under Apache 2.2.17
and with php from command line).
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/bug.php?id=53460&edit=1