Bug #72095 [Com]: Undefined constant GLOB_BRACE while doc-base/configure.php

From: Date: Mon, 22 Jan 2018 07:52:13 +0000
Subject: Bug #72095 [Com]: Undefined constant GLOB_BRACE while doc-base/configure.php
References: 1  Groups: php.doc.bugs 
Request: Send a blank email to doc-bugs+get-15348@lists.php.net to get a copy of this message
Edit report at https://bugs.php.net/bug.php?id=72095&edit=1

 ID:                 72095
 Comment by:         nanhe dot kumar at gmail dot com
 Reported by:        rogeriopradoj@php.net
 Summary:            Undefined constant GLOB_BRACE while
                     doc-base/configure.php
 Status:             Open
 Type:               Bug
 Package:            Doc Build problem
 Operating System:   Alpine Linux
 PHP Version:        Irrelevant
 Block user comment: N
 Private report:     N

 New Comment:

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


Previous Comments:
------------------------------------------------------------------------
[2017-02-12 00:17:03] 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.

------------------------------------------------------------------------
[2016-04-25 14:04:34] 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>

------------------------------------------------------------------------
[2016-04-24 16:07:23] 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-24 13:44:25] 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.



------------------------------------------------------------------------



--
Edit this bug report at https://bugs.php.net/bug.php?id=72095&edit=1


Thread (5 messages)

« previous php.doc.bugs (#15348) next »