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 .
更新: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 .