尝试在 Docker / php:5.3 上安装 GMP 扩展

Trying to install the GMP extension on Docker / php:5.3

我正在尝试在安装了 GMP 扩展的 PHP 5.3 上测试一些 PHP 代码。这是我的 Dockerfile:

FROM php:5.3

RUN apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 7638D0442B90D010 AA8E81B4331F7F50 9D6D8F6BC857C906 \
    && apt-get update \
    && apt-get -y install libgmp-dev \ 
    && docker-php-ext-install gmp

当我尝试构建它时,我收到关于 docker-php-ext-install 不存在的错误。

这是我的第二次尝试:

FROM php:5.3

RUN apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 7638D0442B90D010 AA8E81B4331F7F50 9D6D8F6BC857C906 \
    && apt-get update \
    && apt-get -y install php5-gmp

构建没有问题,但显然这实际上不会导致 PHP 具有 GMP 扩展名。我想也许我需要将 extension=gmp.so 添加到 php.ini 文件,但我并不清楚该文件所在的位置。 php -i | grep ini returns,除此之外,这:

Configuration File (php.ini) Path => /usr/local/lib

但是该目录中没有 php.ini 文件。我尝试创建一个,但仍然没有成功。

可能有一个已经安装了 GMP 扩展的 PHP 5.3 映像?

安装 PHP 扩展是这样的:

FROM php:5.3

RUN apt-key adv --keyserver keyserver.ubuntu.com \
--recv-keys 7638D0442B90D010 AA8E81B4331F7F50 9D6D8F6BC857C906 \
&& apt-get update && apt-get -y install php5-gmp libgmp \ 
&& echo "extension=gmp.so" > /etc/php5/apache2/conf.d/gmp.ini \
&& /etc/init.d/apache2 reload

但是 PHP manual 显示:

In order to have these functions available, PHP must be compiled with GMP support by using the --with-gmp option.

所以Dockerfile中的PHP需要编译时加上--with-gmp选项和libgmp-dev.

我是这样做到的:

FROM php:5.3

RUN apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 7638D0442B90D010 AA8E81B4331F7F50 9D6D8F6BC857C906 \
    && apt-get update \
    && apt-get install -y libgmp-dev wget \
    && ln -s /usr/include/x86_64-linux-gnu/gmp.h /usr/include/gmp.h \
    && cd /tmp \
    && wget --no-check-certificate https://museum.php.net/php5/php-5.3.29.tar.xz \
    && tar xvf php-5.3.29.tar.xz \
    && cd php-5.3.29/ext/gmp \
    && phpize \
    && ./configure \
    && make \
    && make install \
    && echo extension=gmp.so > /usr/local/lib/php.ini

我在 docker 上使用 php:8.0-fpm,这对我有用。我希望这对你也有用。

RUN apt-get update && apt-get install -y gnupg gnupg2 gnupg1 \
    && apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 7638D0442B90D010 AA8E81B4331F7F50 9D6D8F6BC857C906 \
    && apt-get install -y libgmp-dev --fix-missing \
    && docker-php-ext-install gmp

如果您遇到一些关于 libreadline8 的问题,您可以像下面那样做。

RUN apt-get install -y libreadline8 --fix-missing
RUN apt-get update && apt-get install -y gnupg gnupg2 gnupg1 --fix-missing
RUN apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 7638D0442B90D010 AA8E81B4331F7F50 9D6D8F6BC857C906
RUN apt-get install -y libgmp-dev --fix-missing
RUN docker-php-ext-install gmp