环境说明
操作系统:ubuntu 22.04
架构:x86_64
docker运行php容器,php版本7.4。
一、安装php自带扩展
说明:php自带扩展,可看php.ini文件中的,如gd、pdo_mysql、opcache、mysqli等等。这里只举例安装了gd和opcache,安装其他扩展和opcache保持一致即可。
(一)安装gd扩展
这个gd扩展相对比其他复杂一些,需要先安装对应依赖环境。
1.安装gd依赖
apt-get install -y \
libfreetype6-dev \
libjpeg62-turbo-dev \
libpng-dev \
libwebp-dev \
zlib1g-dev
2.编译选项
docker-php-ext-configure gd \
--enable-gd \
--with-freetype \
--with-jpeg \
--with-webp
3.再安装gd扩展
docker-php-ext-install -j$(nproc) gd
说明:-j$(nproc)
:这是一个选项,用于指定并行构建的数量。nproc
是一个命令,用于返回系统中的处理器数量。-j$(nproc)
表示使用系统中的处理器数量作为并行构建的数量,这样可以加速构建过程。
4.在php.ini文件中配置gd.so
extension=gd.so
5.重启php
docker restart 容器名/容器id
(二)安装opcache
1.执行命令
docker-php-ext-install opcache
安装完成如下图:
2.在php.ini文件中配置opcache.so
extension=opcache.so
3.重启php
docker restart 容器名/容器id
二、安装三方php扩展
说明:这里举例安装redis和imagick。
(一)安装redis扩展
1.下载redis扩展
pecl官方地址:PECL :: The PHP Extension Community Library
下载的版本是:redis-5.3.7.tgz
2.安装php扩展
(1)上传 redis 压缩包到服务器
(2)切换到 redis 的压缩包目录
(3)解压 redis
tar -zxvf redis-5.3.7.tgz
(4)复制解压后的目录到php的容器中
docker cp /data/soft/redis-5.3.7 容器名(或容器id):/usr/src/php/ext/redis
(5)进入php容器
docker exec -it 容器名/容器id /bin/bash
(6)执行安装命令
# 切换到php可执行文件目录,如果你在容器中可以直接执行命令,可忽略这一步
cd /usr/local/bin
# 执行命令
docker-php-ext-install redis
安装完成如下图:
生成的扩展在 /usr/local/lib/php/extensions/no-debug-non-zts-20190902/ 这个目录下
(7)在php.ini文件中配置redis.so
extension=redis.so
(8)退出php容器 exit
(9)重启php容器
docker restart 容器名/容器id
(10)验证
# 进入php容器
docker exec -it 容器名/容器id /bin/bash
# 显示php已安装的扩展
php -m
(二)安装imagick
1.先安装ImageMagick
(1)下载地址:Index of /archive
(2)上传到服务器上
(3)解压ImageMagick
tar -zxvf ImageMagick-6.9.13-14.tar.gz
(4)复制解压后的目录到php容器中
docker cp /data/soft/ImageMagick-6.9.13-14 容器名(或容器id):/opt
(5)进入php容器并安装ImageMagick
# 进入php容器
docker exec -it 容器名/容器id /bin/bash
# 安装ImageMagick
## 切换到复制到php的容器目录
cd /opt/ImageMagick-6.9.13-14/
## 编译选项
./configure --prefix=/usr/local/imagemagick
## 编译安装
make && make install
到此,ImageMagick就安装成功了。
2.安装imagick
方式一:通过pecl安装
(1)进入php容器
docker exec -it 容器名/容器id /bin/bash
(2)找到之前安装php的pecl文件
whereis pecl
(3)通过pecl安装imagick
/usr/local/bin/pecl install imagick
安装过程可能会让你输入ImageMagick的路径 上面我们安装的路径:/usr/local/imagemagick 输入回车即可.安装成功
(4)在php.ini中配置imagick.so
extension=imagick.so
(5)重启php容器
docker restart 容器名/容器id
(6)验证扩展是否安装成功 php -m
方式二:源码安装imagick(phpize)
(1)下载imagick
地址:PECL :: Package :: imagick
笔者下载的是imagick-3.5.0.tgz。
(1)上传服务器(xftp)
(2)解压
(3)将解压后的imagick目录复制到php容器中
docker cp /data/soft/imagick-3.5.0 容器名(或容器id):/opt
(4)进入php容器并安装imagick
# 进入php容器
docker exec -it 容器名/容器id /bin/bash
# 安装imagick
## 切换到复制到php的容器目录
cd /opt/imagick-3.5.0/
## 先编译环境准备
/usr/local/bin/phpize
## 编译选项 指定ImageMagick安装目录
./configure --with-php-config=/usr/local/bin/php-config --with-imagick=/usr/local/imagemagick
## 编译安装
make && make install
(5)在php.ini文件中添加imagick.so文件
extension=redis.so
(6)退出并重启php容器
# 退出容器
exit
# 重启
docker restart 容器id/容器名
(7)验证 php -m
参考:如何在docker容器中安装php自带的扩展模块_docker安装php扩展-CSDN博客