【问题标题】:Notice: Use of undefined constant GLOB_BRACE注意:使用未定义的常量 GLOB_BRACE
【发布时间】:2018-06-30 19:46:45
【问题描述】:

收到通知和警告

注意:使用未定义的常量 GLOB_BRACE - 在第 2 行的 /var/www/html/opencart/upload/admin/controller/extension/extension.php 中假定为“GLOB_BRACE”

警告:glob():在第 41 行的 /var/www/html/opencart/upload/admin/controller/extension/extension.php 中,至少有一个传递的标志在此平台上无效或不受支持

警告:在第 44 行的 /var/www/html/opencart/upload/admin/controller/extension/extension.php 中为 foreach() 提供的参数无效

当我列出所有已定义的常量 GLOB_BRACE 时丢失。

GLOB_MARK => 2
GLOB_NOSORT => 4
GLOB_NOCHECK => 16
GLOB_NOESCAPE => 64
GLOB_ERR => 1
GLOB_ONLYDIR => 1073741824
GLOB_AVAILABLE_FLAGS => 1073741911

操作系统、php、Opencart版本:

  • Linux opencart-77fcc87595-2gqvw 4.4.86+ #1 SMP Thu Dec 7 20:11:11 PST 2017 x86_64
  • Linux
  • 当前 PHP 版本:7.1.12
  • OpenCart 版本 2.3.0.2

我已经准备好阅读文档array glob ( string $pattern \[, int $flags = 0 \] )

我 100% 确定这不是 OpenCart 的问题

【问题讨论】:

  • 这可能只是操作系统问题。看到这个线程github.com/zendframework/zend-stdlib/issues/58
  • 还有另一个链接:github.com/CachetHQ/Cachet/issues/2586
  • TFM: 注意:GLOB_BRACE 标志在某些非 GNU 系统上不可用,例如 Solaris。
  • 如果这个常量没有定义,那么你的PHP构建显然不支持它,不管操作系统是否应该正常支持它。我不能说为什么会这样,因为你说你正在运行一个 Linux 平台,但事实就是如此。可能你有一个定制的 PHP,或者你的系统缺少必要的库,或者类似的东西;我无法真正帮助了解它是如何发生的或如何修复它,但很明显它在您的系统上不可用。

标签: php docker ubuntu-16.04 opencart2.x


【解决方案1】:

由于这件事发生在我以前的快乐 glob 用户身上:

如上面的 cmets 中所述 - GLOB_BRACE 在某些操作系统中不可用。例如流行的 Alpine Linux - 在 Docker 容器中大量使用。 Alpine Linux 使用 musl libc 而不是 GNU libc。

解决方法是:当您想在 Alpine Linux 上运行代码时,不要使用 GLOB_BRACE

当您使用提到的“OpenCart”时:PR 的形式出现了一些变化。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-04-02
    • 2021-03-07
    相关资源
    最近更新 更多