尝试在 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
我正在尝试在安装了 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