php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Request #38022 glob() problems
Submitted: 2006-07-06 15:10 UTC Modified: 2021-09-14 14:10 UTC
Votes:2
Avg. Score:4.0 ± 1.0
Reproduced:0 of 0 (0.0%)
From: flconseil at yahoo dot fr Assigned:
Status: Suspended Package: Filesystem function related
PHP Version: 5.1.4 OS: All
Private report: No CVE-ID: None
Welcome back! If you're the original bug submitter, here's where you can edit the bug or add additional notes.
If you forgot your password, you can retrieve your password here.
Password:
Status:
Package:
Bug Type:
Summary:
From: flconseil at yahoo dot fr
New email:
PHP Version: OS:

 

 [2006-07-06 15:10 UTC] flconseil at yahoo dot fr
Description:
------------
Today, glob() calls the libc glob() function, with the following problems:

- Possible inconsistencies between implementations (POSIX compliance)

- fnmatch not available outside of Unix : an internal glob() implementation would bring an internal fnmatch() implementation, which would allow fnmatch() on every platform.

- Important: on most (every ?) Unix systems, glob() is using stat() instead of lstat(). Thus, broken links are ignored. Inconsistant with a naive 'ls' which lists everything in the directory.

- The current glob() implementation in PHP (ext/standard/dir.c) assumes that all returned matches are in the same directory, which is wrong. So, the 'safe mode' and 'open_basedir' checks are wrong.

- glob() does not support streams, although most other directory functions support them. It cannot be done without implementing glob() internally.

- Apart from glob(), the chdir() and getcwd() functions should also support stream-wrapped directories. It would be easy to implement but it must be synchronized with the support of stream wrapped paths in the include path.

Reproduce code:
---------------
None

Expected result:
----------------
None

Actual result:
--------------
None

Patches

Pull Requests

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2007-02-27 19:15 UTC] francois at tekwire dot net
An internal glob() implementation should also provide a flag to exclude hidden files (Unix: starting with a dot, Windows: hidden).
 [2016-12-30 23:50 UTC] cmb@php.net
-Package: Feature/Change Request +Package: Filesystem function related
 [2021-09-14 14:10 UTC] cmb@php.net
-Status: Open +Status: Suspended
 [2021-09-14 14:10 UTC] cmb@php.net
Note that on Windows, PHP uses an internal glob implementation[1]
as of PHP 4.3.0, but this doesn't solve all the mentioned issues
either (especially open_basedir does not reliably work), and using
that implementation for other platforms might not provide the full
feature set currently available (e.g. GLOB_ONLYDIR is not
supported by that implementation).

Anyway, it might still make sense to use this implementation for
all platforms, but that requires the RFC process[2].  Anybody is
welcome to pursue it; for the time being, I suspend this ticket.

[1] <https://github.com/php/php-src/blob/php-7.4.23/win32/glob.c>
[2] <https://wiki.php.net/rfc/howto>
 
PHP Copyright © 2001-2025 The PHP Group
All rights reserved.
Last updated: Sun Jul 13 11:01:33 2025 UTC