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

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

编译成功了,但似乎并没有安装GMP扩展。我想也许需要在php.ini文件中添加extension=gmp.so,但我不确定该文件的位置。php -i | grep ini返回了以下内容:

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

但是那个目录中没有 php.ini 文件。我尝试创建一个,但是仍然没有结果。

可能有PHP 5.3镜像已经安装了GMP扩展插件?

3个回答

2
我能这样做: ```

我能够这样做:

```
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

1

我在 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

这基本上就是我在第一个Dockerfile中尝试做的事情,但正如我原帖所说的那样,"当我尝试构建时,会出现关于docker-php-ext-install不存在的错误"。我猜测php:5.3没有这个命令。无论如何,解决方案已被标记为答案。当然可能存在更好的答案,但对于PHP 5.3来说,你的方法不起作用。我的意思是,如果能起作用,那将是一个更好的方法,但实际上并不起作用。 - undefined

1
安装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手册中写道:

为了使用这些函数,必须通过使用 --with-gmp 选项编译 PHP 来支持 GMP。

因此,在 Dockerfile 中的 PHP 需要使用 --with-gmp 选项和 libgmp-dev 进行编译。


我本以为libgmp-devphp5-gmp的依赖。不过我还是在我的Dockerfile中添加了它!docker-php-ext-enable不在我的系统上。我从你的链接中复制了docker-php-ext-enable脚本,对它进行了chmod 777权限设置,然后执行了./docker-php-ext-enable命令,但是却收到了./docker-php-ext-enable: 5: cd: can't cd to /usr/local/lib/php/extensions/no-debug-non-zts-20090626这个错误。 - undefined
docker-php-ext-install gmp 给我一个 "/bin/sh: 1: docker-php-ext-install: not found" 错误。ls -la /usr/local/lib/php 返回数据,但在那里放置一个 php.ini 文件没有起作用。我尝试过 echo "extension=gmp.so;" > /etc/php.ini,但没有成功。我还尝试了 /usr/local/etc/php.ini/usr/local/etc/ 没有一个 php 目录,所以我创建了 php 目录,并在其中创建了 conf.d,然后按照您的 Dockerfile 显示的方式将 gmp.ini 放在其中。但是没有成功。 - undefined
1
@neubert 使用这个Dockerfile并从源代码构建可能会更容易,使用--with-gmp=DIR参数,它会读取/etc/php5/apache2/conf.d目录。 - undefined

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