一、如何在docker容器中安装php自带的扩展模块?
1、进入到php容器中:
[root@server ~]$ docker exec -it php /bin/bash
2、查看php当前自带的扩展模块:
[root@server ~]$ php -m
或进入扩展模块目录下查看:
[root@server ~]$ cd /usr/local/bin
[root@server ~]$ php -m | grep ftp
如果返回为空,则没有启用,如果返回对应的扩展名,如ftp,则证明已经启用。
若没有启用ftp扩展则使用如下命令启用即可:
[root@server ~]$ docker-php-ext-enable ftp
对于不存在扩列表中的扩展,可以使用通过以下方式进行安装:–>
php自带的扩展若没有安装的话,可以使用以下命令进行安装:
3、安装gd扩展模块:
对于php 7.4及以上版本:
a、先安装gd相应的依赖包:
[root@server ~]$ apt-get install -y \
libfreetype6-dev \
libjpeg62-turbo-dev \
libpng-dev \
libwebp-dev \
zlib1g-dev
b、添加gd库编译选项:
[root@server ~]$ docker-php-ext-configure gd \
--enable-gd \
--with-freetype \
--with-jpeg \
--with-webp
c、再安装gd扩展模块:
[root@server ~]$ docker-php-ext-install -j$(nproc) gd
对于php 7.2来说,安装有区别,具体如下:
a、安装gd相应的依赖:
[root@server ~]$ apt-get install \
libwebp-dev \
libjpeg62-turbo-dev \
libpng-dev libxpm-dev \
libfreetype6-dev
b、添加gd库编译选项:
[root@server ~]$ docker-php-ext-configure gd \
--with-gd \
--with-webp-dir \
--with-jpeg-dir \
--with-png-dir \
--with-zlib-dir \
--with-xpm-dir \
--with-freetype-dir
c、安装gd扩展模块:
[root@server ~]$ docker-php-ext-install -j$(nproc) gd
针对php 7.2与7.4针对安装GD库的区别,具体可以参考:https://www.php.net/manual/en/image.installation.php
4、安装exif扩展模块:
[root@server ~]$ docker-php-ext-install exif
5、安装缓存器OPcache扩展:
[root@server ~]$ docker-php-ext-install opcache
6、安装pdo扩展模块
[root@server ~]$ docker-php-ext-install pdo_mysql
7、安装mysqli扩展模块
[root@server ~]$ docker-php-ext-install mysqli
8、安装zip扩展模块:
a、安装libzip依赖:
[root@server ~]$ apt-get install libzip-dev
b、安装zip扩展:
[root@server ~]$ docker-php-ext-install zip
9、安装sockets扩展:
[root@server ~]$ docker-php-ext-install sockets
10、安装bcmath扩展:
[root@server ~]$ docker-php-ext-install bcmath
二、如何在docker容器中安装第三方扩展?
以安装ioncube为例讲一下步骤:
1、切换到/usr/local/目录:
[root@server ~]$ cd /usr/local
2、下载安装包,根据自己使用的系统下载对应的64位或是32位包(下地地址:https://www.ioncube.com/loaders.php),可使用uname -a命令查看系统:
[root@server ~]$ wget https://downloads.ioncube.com/loader_downloads/ioncube_loaders_lin_x86-64.tar.gz
3、解压安装包:
[root@server ~]$ tar -zxvf ioncube_loaders_lin_x86-64.tar.gz
4、解压后,可以看到里面有各个php版本对应的.so文件,根据你的php版本自行选择对应的,然后修改php.ini配置文件,在文件尾部添加如下代码:
[ionCube Loader]
zend_extension="/usr/local/ioncube/ioncube_loader_lin_7.4.so"
再以安装imagick为例讲一下安装步骤。
1、由于安装imagick扩展时需要依赖ImageMagick的函数库,因此必须要先安装ImageMagick
a、下载安装包(版本选择可前往:https://imagemagick.org/script/mirror.php/):
[root@server ~]$ wget https://imagemagick.org/archive/ImageMagick-7.1.0-40.tar.gz
b、解压安装包:
[root@server ~]$ tar -zxvf ImageMagick-7.1.0-40.tar.gz
c、进入安装目录:
[root@server ~]$ cd ImageMagick-7.1.0-40
d、进行配置:
[root@server ~]$ ./configure --prefix=/usr/local/imagemagick
e、执行安装:
[root@server ~]$ make && make install
2、安装PHP的扩展imagick:
安装imagick扩展时需要PHP >= 5.1.3,ImageMagick >= 6.2.4,可以从http://pecl.php.net/package/imagick找到imagick的最新的stable版本。
a、下载最新版本(下载地址:http://pecl.php.net/package/imagick):
[root@server ~]$ wget http://pecl.php.net/get/imagick-3.7.0.tgz
b、解压安装包:
[root@server ~]$ tar -zxvf imagick-3.7.0.tgz
c、进入安装目录:
[root@server ~]$ cd imagick-3.7.0
d、配置phpize:phpize是一个shell脚本,主要是用来进行编译环境的准备,执行以后会生成一些新的文件,为配置、编译及安装作好准备。在imagick-3.4.4目录中执行/usr/local/bin/phpize(php容器中的位置)以生成configure。
[root@server ~]$ /usr/local/bin/phpize
e、查找配置相关的php-config路径:
[root@server ~]$ find / -name php-config
/usr/local/bin/php-config
f、进行配置(将上一步的中php-config路径放入到--with-php-config):
[root@server ~]$ ./configure --with-php-config=/usr/local/bin/php-config --with-imagick=/usr/local/imagemagick
g、执行安装:
[root@server ~]$ make && make install
3.配置扩展:
打开配置文件php.ini(php容器中的位置:/usr/local/etc/php/php.ini),加入如下的一行 :
extension = "imagick.so"
然后执行php -m | grep imagick,发现已经出现imagick模块了,证明imagick已经生效了
在完成扩展安装后,退出并重启容器就可以生效了。
[root@server ~]$ exit
[root@server ~]$ docker restart php
[root@server ~]$ docker restart nginx
注意:如果进入容器无法使用wget之类的命令,请参考《docker容器中安装常用命令工具》。
我安装好的扩展模块目录为:/usr/local/lib/php/extensions/no-debug-non-zts-20190902/。这个目录根据系统和环境会有不同。