我正在使用Arch Linux操作系统。
我有一个运行php项目的容器,我需要启用gmp和curl扩展。
我的容器基于Alpine映像,我可以使用docker exec {container-name} apk add php-gmp php-curl
安装扩展。
然后,如果我运行docker exec {container-name} php -m
以显示扩展名,则控制台将打印gmp
和curl
。太好了,这一切都很好,我也在同一容器内运行的php.ini文件中启用了扩展名。
但是,如果我转到控制器并返回extension_loaded('gmp')
,则会显示错误!
我想念什么?
答案 0 :(得分:0)
向Jon Stirling大喊他的答案。
我需要重新编辑 Dockerfile 以包括gmp
和curl
软件包,然后还要 Dockerfile 编辑 php.ini 配置文件,以同时包含gmp
和curl
扩展名。
所以:
运行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=gmp
和extension=curl
匹配的所有行,并替换它们所在的整行。
这基本上取消了 php.ini 文件中的注释,而不必从目录中复制整个新的 php.ini 文件。
使用docker-compose build
重建了整个项目,然后重新启动所有内容extension_loaded('gmp')
后,返回了true
!