PHP расширение HTTP на Docker альпийском изображении - PullRequest
0 голосов
/ 07 февраля 2020

Я пытаюсь установить / включить расширение PHP http на моем PHP альпийском образе.

Мой composer.json файл для моего приложения содержит "ext-http": "*", следовательно, моя цель.

Мой Dockerfile (соответствующие части) выглядит следующим образом:

# PHP-FPM Base Image
FROM php:7.2.26-fpm-alpine

# Install PHP extensions
RUN apk add --update --virtual .build-deps autoconf g++ make zlib-dev curl-dev \
  && pecl install raphf propro \
  && docker-php-ext-enable raphf propro \
  && pecl install pecl_http \
  && echo -e "extension=raphf.so\nextension=propro.so\nextension=http.so" > /usr/local/etc/php/conf.d/docker-php-ext-http.ini \
  && rm -rf /usr/local/etc/php/conf.d/docker-php-ext-raphf.ini \
  && rm -rf /usr/local/etc/php/conf.d/docker-php-ext-propro.ini \
  && apk del .build-deps \
  && rm -rf /tmp/*

Однако при запуске composer update я получаю следующее предупреждение:

PHP Warning:  PHP Startup: Unable to load dynamic library 'http.so' (tried: /usr/local/lib/php/extensions/no-debug-non-zts-20170718/http.so (Error relocating /usr/local/lib/php/extensions/no-debug-non-zts-20170718/http.so: uidna_IDNToASCII: symbol not found), /usr/local/lib/php/extensions/no-debug-non-zts-20170718/http.so.so (Error loading shared library /usr/local/lib/php/extensions/no-debug-non-zts-20170718/http.so.so: No such file or directory)) in Unknown on line 0

После чего composer update Сбой команды:

The requested PHP extension ext-http * is missing from your system. Install or enable PHP's http extension.

Часть предупреждения http.so.so дает мне паузу, заставляя меня думать, что файл ищется в неправильном месте.

Моя ссылка следующая Dockerfile: https://hub.docker.com/r/realpaul/docker-php/dockerfile

Может кто-нибудь помочь мне отладить эту проблему? Спасибо!

1 Ответ

1 голос
/ 08 февраля 2020

Часть этого сообщения об ошибке гласит:

http.so: uidna_IDNToASCII: символ не найден

Согласно PECL_HTTP установлен, но не установлен работа , это сообщение об ошибке указывает на недоступность iconv.so. Пожалуйста, попробуйте включить это также через echo'ing на /usr/local/etc/php/conf.d/docker-php-ext-http.ini.

Кроме того, если вы предполагаете, что http.so не находится в позиции, которую ожидает PHP, вы должны попытаться запустить bash в вашем работающем контейнере, чтобы увидеть, есть ли этот файл или нет. Но поскольку этот файл выдает ошибку, вы можете предположить, что он там

...