docker_php扩展安装

0x00 前言

找到在docker容器中安装配置的一种便捷方式

0x01 使用前准备

docker-php-source

格式

1
docker-php-source extract | delete

参数说明

extract 创建并初始化 /usr/src/php目录 (提供扩展源码,以备之后安装)

delete 删除 /usr/src/php目录

0x02 启用已有扩展

docker-php-ext-enable

启用PHP扩展(已安装的)

用pecl安装PHP扩展的时候,默认是没有启动扩展的,需要去php.ini配置,而这个命令不需要去php.ini配置

格式

1
2
3
docker-php-ext-enable 扩展名

//如 docker-php-ext-enable exif

0x03 安装未有扩展并启用

docker-php-ext-install

安装PHP扩展,并且在安装完后自动启用

格式

1
2
docker-php-ext-install 扩展名
//如 docker-php-ext-install exif
  • “源码包“需要放在 /usr/src/php/ext 下
  • 默认情况下,PHP容器没有 /usr/src/php这个目录,需要使用 docker-php-source extract来生成。
  • docker-php-ext-install 安装的扩展在安装完成后,会自动调用docker-php-ext-enable来启动安装的扩展。
  • 卸载扩展,直接删除/usr/local/etc/php/conf.d 对应的配置文件即可。

0x04 自定义安装扩展

docker-php-ext-configure

docker-php-ext-configure 一般都是需要跟 docker-php-ext-install搭配使用的。它的作用就是,当你安装扩展的时候,需要自定义配置时,就可以使用它来帮你做到。

案例

1
2
3
4
5
6
7
8
9
10
11
12
13
FROM php:7.1-fpm
RUN apt-get update \
# 相关依赖必须手动安装
&& apt-get install -y \
libfreetype6-dev \
libjpeg62-turbo-dev \
libmcrypt-dev \
libpng-dev \
# 安装扩展
&& docker-php-ext-install -j$(nproc) iconv mcrypt \
# 如果安装的扩展需要自定义配置时
&& docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ \
&& docker-php-ext-install -j$(nproc) gd

0x05 麻烦的扩展安装

(安装时需要前置组件的那种,此块内容可能不全,但会不断更新)

zip

1
2
3
#安装此扩展前请先安装一下前置
apt install zlib1g-dev
apt install libzip-dev

curl

1
2
#安装此扩展前请先安装一下前置
apt-get install libcurl4-openssl-dev -y

ffi

1
2
apt-get install libffi6=3.2.1-6
apt-get install libffi-dev

gd

1
2
3
apt-get install --allow-downgrades -y  zlib1g=1:1.2.8.dfsg-5 zlib1g-dev libz-dev libfreetype6-dev libjpeg62-turbo-dev libpng-dev \
&& docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ \
&& docker-php-ext-install -j$(nproc) gd

0x06 参考

https://zhuanlan.zhihu.com/p/98610987


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!