docker安装php扩展gd库

Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。

Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux(Windows,MacOS) 机器上,也可以实现虚拟化。

容器是完全使用沙箱机制,相互之间不会有任何接口,更重要的是容器性能开销极低。

一、安装nginx、php、mysql镜像

docker pull nginx:latest
docker pull php:5.6-fpm
docker pull php:5.6-cli
docker pull mysql:5.6.46
docker pull phpmyadmin/phpmyadmin

使用命令 docker images 查看本地镜像:

REPOSITORY              TAG                 IMAGE ID            CREATED             SIZE
nginx                   latest              c7460dfcab50        5 hours ago         126MB
phpmyadmin/phpmyadmin   latest              fcf3beee74b9        47 hours ago        458MB
mysql                   5.6.46              f7ba8643e01a        12 days ago         302MB
php                     5.6-fpm             3458979c7744        11 months ago       344MB
php                     5.6-cli             36c3c974e6ee        11 months ago       344MB

善用 docker search 命令来查看可用版本。

https://www.runoob.com/docker/docker-search-command.html

二、运行、停止、删除容器

可以执行命令 docker container ls (或docker ps)或者 docker container ls -all(或docker ps -a),来查看已启动的容器或者所有容器。

docker run --name xu-mysql -e MYSQL_ROOT_PASSWORD=123456 -p 3306:3306 -d mysql:5.6.46
docker run --name xu-phpmyadmin -d --link xu-mysql:db -p 8081:80 phpmyadmin/phpmyadmin
# 访问http://127.0.0.1:8081/,使用root/123456账号信息登录管理mysql
docker run --name  xu-php-fpm5.6 -v ~/code/docker/nginx/www:/www  -d php:5.6-fpm

下面Nginx + PHP:

docker run --name xu-nginx -p 8080:80 -d -v ~/code/docker/nginx/www:/usr/share/nginx/html -v ~/code/docker/nginx/conf/conf.d/:/etc/nginx/conf.d --link xu-php-fpm5.6:php nginx

参考:

https://www.runoob.com/docker/docker-install-php.html
https://hub.docker.com/_/php

当把web程序代码放入 ~/code/docker/nginx/www 后,在浏览器打开http://127.0.0.1:8080/,提示:

您的服务器环境不支持gd扩展,将无法使用验证码!

容器的停止、删除,如下:

docker stop 027c0f432aae # 此外对应的容器id
docker rm 027c0f432aae

查看mysql容器的ip地址,连接数据库时用得上:

docker inspect --format=‘{{.NetworkSettings.IPAddress}}‘ xu-mysql

三、安装php扩展gd库

如果之前启用了 gd,需要先在 php.ini 文件中注释掉 extension=gd.so 并重启容器。

进入php容器:

docker exec -it <容器ID或容器名称> /bin/bash

可把软件源修改为国内某镜像站源,例如容器软件源 /etc/apt/sources.list 修改为网易镜像站源,以stretch为例:

# 先做备份:
mv /etc/apt/sources.list /etc/apt/sources.list.bak
# 再创建编辑 /etc/apt/sources.list
deb http://mirrors.163.com/debian/ stretch main contrib non-free contrib
deb http://mirrors.163.com/debian/ stretch-updates main contrib non-free contrib
deb http://mirrors.163.com/debian/ stretch-backports main contrib non-free contrib

编辑器推荐安装 vim,默认没有安装,请先执行 apt-get update,再安装 apt-get install vim,但是往往矛盾的是,我如果能够快速更新并安装的话,就用不着换源了,所以使用最基本的命令“echo”:

# 依次执行:

echo "deb http://mirrors.163.com/debian/ stretch main non-free contrib" >/etc/apt/sources.list

echo "deb http://mirrors.163.com/debian/ stretch-proposed-updates main non-free contrib" >>/etc/apt/sources.list

echo "deb-src http://mirrors.163.com/debian/ stretch main non-free contrib" >>/etc/apt/sources.list

echo "deb-src http://mirrors.163.com/debian/ stretch-proposed-updates main non-free contrib" >>/etc/apt/sources.list
# 更新软件源
apt update
# 安装各种库
apt install -y libwebp-dev libjpeg-dev libpng-dev libfreetype6-dev
# 解压源码
docker-php-source extract
# 进入gd源码文件夹
cd /usr/src/php/ext/gd
# 准备编译
docker-php-ext-configure gd --with-webp-dir=/usr/include/webp --with-jpeg-dir=/usr/include --with-png-dir=/usr/include --with-freetype-dir=/usr/include/freetype2
# 编译安装
docker-php-ext-install gd
# 检查扩展是否安装成功
php -m | grep gd
# 退出php容器终端
exit
# 重启php容器
……

如果网站图形验证码还显示不出来,报错如下:

Fatal error: Call to undefined function core\extend\code\imagettftext()

按照以下步骤进行:

docker-php-ext-configure gd --enable-gd-native-ttf --with-freetype-dir=/usr/include/freetype2 --with-png-dir=/usr/include

重新编译:
docker-php-ext-install gd

如果报错:

configure: error: freetype-config not found.

运行: apt install libfreetype6-dev ,然后再继续运行上面的命令。

gd库中有了freetype,则验证码显示正常了。

同理,如果提示没有mysqli扩展,执行 docker-php-ext-install mysqli 命令再重启php容器即可。

四、扩展知识

1、docker-php-source

此命令在PHP容器中创建一个/usr/src/php的目录,里面放了一些自带的文件而已。我们就把它当作一个从互联网中下载下来的PHP扩展源码的存放目录即可。事实上,所有PHP扩展源码扩展存放的路径: /usr/src/php/ext 里面。

格式:

docker-php-source extract | delete

参数说明:
* extract : 创建并初始化 /usr/src/php目录
* delete : 删除 /usr/src/php目录

2、docker-php-ext-enable

这个命令是用来启动 PHP扩展 的。我们使用pecl安装PHP扩展的时候,默认是没有启动这个扩展的,如果想要使用这个扩展必须要在php.ini这个配置文件中去配置一下才能使用这个PHP扩展。而 docker-php-ext-enable 这个命令则是自动给我们来启动PHP扩展的,不需要你去php.ini这个配置文件中去配置。

3、docker-php-ext-install

这个命令是用来安装并启动PHP扩展的。
命令格式:
docker-php-ext-install “源码包目录名”

注意点:

    • “源码包“需要放在 /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 对应的配置文件即可。

原文出处:https://xushanxiang.com/2020/01/docker-php-gd.html

原文地址:https://www.cnblogs.com/xusx2014/p/12181916.html

时间: 2024-10-31 12:54:02

docker安装php扩展gd库的相关文章

一般源码安装添加的GD库 是不支持 jpeg 格式的图片的

一般源码安装添加的GD库 是不支持 jpeg 格式的图片的,只支持如下格式 GD Support enabled GD Version bundled (2.0.34 compatible) GIF Read Support enabled GIF Create Support enabled PNG Support enabled libPNG Version 1.2.49 WBMP Support enabled XBM Support enabled  下面我们来 添加 jpeg 格式文件

安装GD库解决ThinkPHP 验证码Call to undefined function Think\imagecreate()出错

在php中imagecreate函数是一个图形处理函数,主要用于新建一个基于调色板的图像了,然后在这个基础上我们可以创建一些图形数字字符之类的,但这个函数需要GD库支持,如果没有开启GD库使用时会提示Call to undefined function imagecreate()错误. 例,我在测试一个简单生成图形时实例 Example #1 新建一个新的 GD 图像流并输出图像  代码如下 复制代码 <?php header("Content-type: image/png")

Linux下通过源码编译GD库

因为之前都通过源码直接编译安装的lamp环境,所以好多扩展库都是没有安装的,突然现在要用到一个验证码类,imagecreate函数显示未定义,所以就来安装编译下GD库, 首先需要先安装 gd 前置库 : freetype ,jpegsrc,libpng. freetype wget "http://download.savannah.gnu.org/releases/freetype/freetype-2.4.0.tar.bz2" tar jxvf freetype-2.4.0.tar

GD库的基本信息,图像的旋转、水印、缩略图、验证码,以及图像类的封装

GD库检测 <?php phpinfo(); ?> GD库安装• Windows 使用phpstudy • Linux 编译安装 –with-gd• Linux 编译安装扩展 GD库支持的图像格式 使用 gd_info() 函数 检测服务器支持的图像格式 图像信息处理 <?php //获取图像详细信息 $image = '../image/b.png'; $info = getimagesize($image); var_dump($info); $string = file_get_c

liunx php的GD库 添加 jpeg 文件的支持

一般源码安装添加的GD库 是不支持 jpeg 格式的图片的,只支持如下格式 GD Support enabled GD Version bundled (2.0.34 compatible) GIF Read Support enabled GIF Create Support enabled PNG Support enabled libPNG Version 1.2.49 WBMP Support enabled XBM Support enabled 下面我们来 添加 jpeg 格式文件的

CentOS6.5 单独编译安装PHP gd库扩展

公司网站的服务器前几天安装了Workpress环境主要是跑PHP,环境是Nginx+php-fpm,PHP是yum安装的,所以是最小化安装,php的各种扩展都没有.今天需要用到GD库,才发现没GD库环境,所以需要安装这个扩展.对付单个扩展,单独编译动态加载是比较方便快捷的. 先安装 gd 前置库 : freetype ,jpegsrc,libpng. 1. freetype wget http://download.savannah.gnu.org/releases/freetype/freet

CentOS单独编译安装PHP gd库扩展

网站的第二台服务器跑的的环境主要是Python/Ruby,有时也需要简单跑跑PHP脚本,所以也安装了PHP,环境是Nginx+php-fpm,PHP是源码编译安装的,所以是最小化安装,甚至连mysqli扩展都没有.今天需要用到GD库,才发现没GD库环境,所以需要安装这个扩展.对付单个扩展,单独编译动态加载是比较方便快捷的.安装过程也比较繁杂,这个记录一下,方便后来者. 首先说明,我的PHP是源码编译安装的,可以参看 以源码编译的方式安装PHP与php-fpm. 先安装 gd 前置库 : free

CentOS6.8单独编译安装PHP gd库扩展

# PHP-GD安装 #在安装之前可以先更新一下yum源,可以使用国内的阿里云源 yum -y install libjpeg-turbo-devel yum -y install freetype-devel #此处使用的安装方式是源码编译安装,先从网上下载源码 cd packges/php-7.0.13/ext/gd/ /usr/local/php/bin/phpize ./configure --with-php-config=/usr/local/php/bin/php-config -

PHP环境安装配置(含IIS+PHP+MySQL+Zend Optimizer+GD库+phpMyAdmin)

IIS+PHP+MySQL+Zend Optimizer+GD库+phpMyAdmin安装配置一.软件准备 1.windos20032.IIS6.03.php-5.2.11-Win324.mysql-5.0.27-win325.ZendOptimizer-3.3.3-Windows6.phpMyAdmin-3.2.2.1(重庆萤火虫专用版) 二.开始安装 请确认已经安装好了windos2003+IIS6.0 第一步:安装PHP 1.将下载得到的php-5.2.11-win32解压到自己需要放置的