Alpine 中的 Composer Docker PHP 致命错误

Composer in Alpine Docker PHP Fatal error

更新:php-curl 扩展导致分段错误。

我是 运行 docker 管道,在 ARM64 上使用 alpine 3.15 和 PHP 7.0 和 7.1。

我使用

安装作曲家
COPY --from=composer:latest  /usr/bin/composer /usr/bin/composer

自昨天(4 月 5 日)以来,所有管道都失败并出现以下错误:

PHP Fatal error: Declaration of Composer\IO\BaseIO::hasAuthentication($repositoryName) must be compatible with Composer\IO\IOInterface::hasAuthentication(string $repositoryName) in phar:///usr/bin/composer/src/Composer/IO/BaseIO.php on line 20

我尝试使用旧版本的作曲家,但在所有这些版本上我得到:

Segmentation fault

这在过去 6 个月内运行良好。所以最近在作曲家构建上发生了一些变化。 我也在 Intel 上尝试 运行 并以经典方式安装作曲家,但是,我也遇到了同样的错误。

您正在安装 composer:latest,即日起将安装 Composer 2.3。你是在 PHP 7.0 和 PHP 7.1.

上做的

那些 PHP 版本 are no longer supported by Composer 2.3(也不是 PHP,因为它的价值)。

As announced in the 2.2 release notes, Composer 2.3 increases the required PHP version to >=7.2.5 and thus stops supporting PHP 5.3.2 - 7.2.4. The 2.2 LTS is still there for users stuck on older PHP versions.

您的选择是:

  • 升级 PHP 所以使用支持的东西。如果您 留在 v7,您至少可以升级到 PHP 7.4
  • 使用旧版本的作曲家。不要使用不受约束的“最新”标签,而是指向您知道它受支持的特定标签。

你可以试试2.2版,我觉得应该可以。如果没有,请继续向后退,直到找到适用于您的堆栈的一个。

COPY --from=composer:2.2  /usr/bin/composer /usr/bin/composer

这个不会工作:

FROM php:7.1-cli-alpine

COPY --from=composer:2.3  /usr/bin/composer /usr/bin/composer

RUN mkdir /someproject
WORKDIR /someproject

RUN composer create-project symfony/skeleton .

但这:

FROM php:7.1-cli-alpine

COPY --from=composer:2.2  /usr/bin/composer /usr/bin/composer

RUN mkdir /someproject
WORKDIR /someproject

RUN composer create-project symfony/skeleton .