php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #72095 Undefined constant GLOB_BRACE while doc-base/configure.php
Submitted: 2016-04-24 13:44 UTC Modified: 2016-04-25 14:04 UTC
Votes:5
Avg. Score:3.8 ± 1.0
Reproduced:5 of 5 (100.0%)
Same Version:4 (80.0%)
Same OS:3 (60.0%)
From: rogeriopradoj@php.net Assigned:
Status: Open Package: Doc Build problem
PHP Version: Irrelevant OS: Alpine Linux
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: rogeriopradoj@php.net
New email:
PHP Version: OS:

 

 [2016-04-24 13:44 UTC] rogeriopradoj@php.net
Description:
------------
When running doc-base/configure.php (as pointed in http://doc.php.net/tutorial/editing.php) for any language (en or translations), in Alpine Linux, 3 error messages are thrown, 1 notice and 2 warnings:

---
$ php doc-base/configure.php --enable-xml-details
Iterating over extension specific version files... PHP Notice:  Use of undefined constant GLOB_BRACE - assumed 'GLOB_BRACE' in /php-manual/doc-base/configure.php on line 573
PHP Warning:  glob() expects parameter 2 to be long, string given in /php-manual/doc-base/configure.php on line 573
PHP Warning:  Invalid argument supplied for foreach() in /php-manual/doc-base/configure.php on line 573
---

The message "All good. Saving .manual.xml… done." is shown in the end, anyway we could make these errors disappear.

Researching a little I found that this happens in Alpine Linux because seems that it doesn't support GLOB_BRACE since it is using musl libc instead of GNU libc.

> https://github.com/zendframework/zend-stdlib/issues/58

The workaround is not hard to implement (https://github.com/zendframework/zend-stdlib/pull/59):

Instead of using directly

... GLOB_BRACE ...

it's just to check if it's defined before otherwise defaults to 0, like this:

... defined('GLOB_BRACE') ? GLOB_BRACE : 0 ...

As shown above, it's the way the issue was solved in Zend Framework.

---

As Alpine Linux is going to get more attention mainly because of Docker based environments because it's very lightweight (https://www.brianchristner.io/docker-is-moving-to-alpine-linux/), I guess this workaround proposed is worth to have here as well.


Patches

phpdoc-glob_brace_alpine-linux.patch (last revision 2016-04-24 13:45 UTC by rogeriopradoj at gmail dot com)

Pull Requests

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2016-04-24 16:07 UTC] bjori@php.net
I don't like the inline ternary use, just define the constant upfront in stead and then it looks good to me.
 [2016-04-25 14:04 UTC] cmb@php.net
Setting GLOB_BRACE to 0 obviously deactivates the advanced
features of glob()[1]. Either GLOB_BRACE is necessary, or not. In
the latter case we simply can remove the flag; in the former we'd
break the code.

[1] <https://3v4l.org/BrtiP>
 [2017-02-12 00:17 UTC] danack@php.net
There is some code above that is expecting the GLOB_BRACE to work.

 $globdir = dirname($ac["GENERATE"]) . "/{../,./}versions.xml";

This could be worked around.....or people could just use operating systems that glob_brace is present on.
 [2018-01-22 07:52 UTC] nanhe dot kumar at gmail dot com
Notice: Use of undefined constant GLOB_BRACE - assumed 'GLOB_BRACE' in /var/www/html/opencart/upload/admin/controller/extension/extension.php on line 2
Warning: glob(): At least one of the passed flags is invalid or not supported on this platform in /var/www/html/opencart/upload/admin/controller/extension/extension.php on line 41Warning: Invalid argument supplied for foreach() in /var/www/html/opencart/upload/admin/controller/extension/extension.php on line 44

When i list  defined constant GLOB_BRACE is missing.
GLOB_MARK => 2
GLOB_NOSORT => 4
GLOB_NOCHECK => 16
GLOB_NOESCAPE => 64
GLOB_ERR => 1
GLOB_ONLYDIR => 1073741824
GLOB_AVAILABLE_FLAGS => 1073741911 

Linux opencart-77fcc87595-2gqvw 4.4.86+ #1 SMP Thu Dec 7 20:11:11 PST 2017 x86_64
Linux
Current PHP version: 7.1.12
 
PHP Copyright © 2001-2024 The PHP Group
All rights reserved.
Last updated: Thu Nov 21 17:01:32 2024 UTC