PHP7.2-OpenSSL Alpine Docker 安装错误

5

我正在使用Alpine、php7.2-fpm和Composer构建Docker镜像。

安装Composer时出现了问题,它通过https协议下载安装程序。

为了能够安装php7.2及其软件包(用于安装Composer),我已经添加了存储库。

RUN wget -O /etc/apk/keys/phpearth.rsa.pub https://repos.php.earth/alpine/phpearth.rsa.pub && \
    echo "https://repos.php.earth/alpine/v3.7" >> /etc/apk/repositories && \
    apk update

当我尝试下载Composer时,出现以下错误:
/ # php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
PHP Warning:  copy(): Unable to find the wrapper "https" - did you forget to enable it when you configured PHP? in Command line code on line 1
PHP Stack trace:
PHP   1. {main}() Command line code:0
PHP   2. copy() Command line code:1
PHP Warning:  copy(): Unable to find the wrapper "https" - did you forget to enable it when you configured PHP? in Command line code on line 1
PHP Stack trace:
PHP   1. {main}() Command line code:0
PHP   2. copy() Command line code:1
PHP Warning:  copy(https://getcomposer.org/installer): failed to open stream: No such file or directory in Command line code on line 1
PHP Stack trace:
PHP   1. {main}() Command line code:0
PHP   2. copy() Command line code:1

搜索有关此错误的信息,我发现所有相关的都与openssl php扩展有关。

尝试安装php7.2-openssl扩展时,我收到以下错误消息:

/ # apk add php7.2-openssl
ERROR: unable to select packages:
  php7.2-igbinary (no such package):
    required by: world[php7.2-igbinary]
  php7.2-msgpack (no such package):
    required by: world[php7.2-msgpack]
  php7.2-readline (no such package):
    required by: world[php7.2-readline]
  so:libcrypto.so.42 (no such package):
    required by: php7.2-openssl-7.2.16-r0[so:libcrypto.so.42]
  so:libssl.so.44 (no such package):
    required by: php7.2-openssl-7.2.16-r0[so:libssl.so.44]

如果我使用“-f”强制安装,看起来好像已经安装了,但实际上没有。命令apk list php* --installed不会显示openssl扩展,并且https请求仍然返回相同的https错误。

另一种安装Composer的方法对我来说并不是最好的选择。最终我还是需要通过php使用https。

我正在使用截至目前为止的最新Alpine Docker基础镜像版本,即“3.14.2”。

我想知道这是否与添加的存储库版本(3.7)与镜像版本(3.14.2)有关。

我希望能够理解发生了什么事情。


3
你为什么使用“repos.php.earth”?我不知道里面有什么,但如果你只是需要PHP,也许用官方仓库会更好一些?主要标签列表中不再列出PHP 7.2构建(在从主存储库链接的https://github.com/docker-library/docs/blob/master/php/README.md#supported-tags-and-respective-dockerfile-links中)。但这并不一定意味着这些构建不存在了。可能有更好的方法找到它们,但以下是我所做的:... - Don't Panic
3
往下滚动页面,有一个链接指向“页面的Git历史记录”(https://github.com/docker-library/docs/commits/master/php)。我滚动到页面底部,选择了链接“Nov 12, 2020”,以查看当时页面的样子。果然,有几个php-fpm 7.2 Alpine构建被列出。我随机尝试了其中一个,它仍然存在:docker pull php:7.2-fpm-alpine3.11(可以正常工作)。我是随机选择那个日期和版本的,如果您需要特定版本,请查找。 - Don't Panic
嘿,你有没有找到phpearth.rsa.pub文件的任何解决方法? - Leo
我最终使用了非alpine的php-fpm镜像。但我尝试了一下这个alpine的方法。 我无法按照我原本的尝试方式使其工作。虽然@Don'tPanic的回复非常准确。使用他建议的镜像,我能够在php中使用https。我仍然不知道为什么会发生这种情况,但他/她的回复让它工作了。 - Kevin Souza
1个回答

0

最近我也遇到了同样的问题。通过将Alpine降级到早期的稳定版本来解决它。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接