php7.2-ошибка установки openssl Alpine Docker

#php #docker #composer-php #alpine #php-openssl

Вопрос:

Я создаю образ докера с помощью Alpine, php7.2-fpm и Composer.

Проблема возникает при попытке установить Composer, который использует https для загрузки установщика через php.

Я добавил репозиторий, чтобы иметь возможность устанавливать php7.2 (который используется для установки composer) и его пакеты:

 RUN wget -O /etc/apk/keys/phpearth.rsa.pub https://repos.php.earth/alpine/phpearth.rsa.pub amp;amp; 
    echo "https://repos.php.earth/alpine/v3.7" >> /etc/apk/repositories amp;amp; 
    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
 

В поисках этой ошибки все, что я нашел, было связано с расширением php openssl.

При попытке установить расширения 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 был бы не лучшим для меня. В конце концов, мне все равно придется использовать https через php.

Я использую последнюю версию базового образа Alpine Docker на сегодняшний день. Что означает «3.14.2».

Интересно, имеет ли это какое-то отношение к добавленной версии репозитория (3.7) по сравнению с версией образа (3.14.2).

Я бы хотел понять, что происходит.

Комментарии:

1. Есть ли причина, по которой вы используете «repos.php.earth»? Я не знаю, что в этом такого, но если вы просто ищете PHP, может быть, вам повезет больше с официальным репо? Сборки PHP 7.2 больше не перечислены в списке основных тегов (связаны из основного репозитория ). Но это не обязательно означает, что сборки больше не существуют. Вероятно, есть лучший способ найти их, но вот что я сделал: …

2. При прокрутке этой страницы вниз появляется ссылка на историю git самой страницы . Я прокрутил страницу вниз и выбрал ссылку «12 ноября 2020 года», чтобы посмотреть, как тогда выглядела страница . Конечно же, в списке есть несколько сборок php-fpm 7.2 Alpine. Я попробовал один из них случайным образом, и он все еще существует: docker pull php:7.2-fpm-alpine3.11 (который работает). Я выбрал эту дату и версию случайным образом, поищите, если вам нужны конкретные версии.

3. Эй, вы нашли какой-нибудь обходной путь для файла phpearth.rsa.pub?

4. В итоге я использовал не альпийский образ php-fpm. Но я попробовал этот альпийский подход. Я не мог заставить это работать так, как пытался а. Хотя ответ @Don’Tpanic был очень точным. Используя предложенное им изображение, я смог использовать https в php. Я все еще не знаю, почему это происходило, но его/ее ответ заставил это сработать.