从Docker容器向PHP添加扩展

时间:2018-10-24 09:49:55

标签: php docker curl gmp alpine

我正在使用Arch Linux操作系统。

我有一个运行php项目的容器,我需要启用gmp和curl扩展。

我的容器基于Alpine映像,我可以使用docker exec {container-name} apk add php-gmp php-curl安装扩展。

然后,如果我运行docker exec {container-name} php -m以显示扩展名,则控制台将打印gmpcurl。太好了,这一切都很好,我也在同一容器内运行的php.ini文件中启用了扩展名。

但是,如果我转到控制器并返回extension_loaded('gmp'),则会显示错误!

我想念什么?

1 个答案:

答案 0 :(得分:0)

Jon Stirling大喊他的答案。

我需要重新编辑 Dockerfile 以包括gmpcurl软件包,然后还要 Dockerfile 编辑 php.ini 配置文件,以同时包含gmpcurl扩展名。

所以:

  

运行apk添加--no-cache \

     
    

... {我所有其他包裹} ...

         

php-gpm \

         

php-curl

         

RUN sed -i's / extension = gmp。 $ / extension = gmp /; s / extension = curl。 $ / extension = curl /;' /etc/php7/php.ini

  

最后一行使用终端工具'sed -i'替换与extension=gmpextension=curl匹配的所有行,并替换它们所在的整行。

这基本上取消了 php.ini 文件中的注释,而不必从目录中复制整个新的 php.ini 文件。

使用docker-compose build重建了整个项目,然后重新启动所有内容extension_loaded('gmp')后,返回了true