docker安装php GD库

故事是这样的:

公司采购了一套商城源码,使用的是 TP5,同事先行,用宝塔部署到生产环境,运行正常。后面我忙完手里的项目,也加入其中,我本地使用的是 docker

当我部署好开始运行时,发现 在登录界面时 图形验证码 报错 500

然后我绞尽脑汁的在想,会是什么问题呢?

终于,想到了,GD 库,我看了一下 php 模块,确实,没有 GD 库,所以,就有了如下的文章。

进入 docker 容器后,我们可以先查看一下 php 模块

发现,确实没有 gd 库。

docker安装php GD库_第1张图片

那好吧,咱们开始安装 gd 库!

第一步:安装依赖

apt-get install -y libfreetype6-dev libjpeg62-turbo-dev libpng-dev

Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
E: Unable to locate package libfreetype6-dev
E: Unable to locate package libjpeg62-turbo-dev
E: Unable to locate package libpng-dev

运行时,出现了上面这些信息,意思就是说,无法定位到这些包

解决方案是:我们先进行更新下载安装软件包命令

第二步:更新下载安装软件包命令

apt-get update

因为环境的原因,所以如果 同学一次性成功那是最好,如果出现了我这样的问题,那就要再多出几个步骤了。。

W: Failed to fetch http://deb.debian.org/debian/dists/bullseye/InRelease  Temporary failure resolving 'deb.debian.org'
W: Some index files failed to download. They have been ignored, or old ones used instead.

当出现上面这些警告,那就是说,我们更新失败。。

是什么原因呢?镜像,我们要切换成我们国内的,这里我们示例 阿里云镜像。

cat /etc/resolv.conf

执行上面的命令,会输出:

nameserver 127.0.0.11
options ndots:0

我们就需要在这个文件中,加入 阿里云的镜像

vim /etc/resolv.conf

bash: vim: command not found

如果哈,如果出现上面这个 "找不到命令",那么恭喜,请去看我另外一篇文章吧:

docker 容器里bash: vim: command not found_龙枫995的博客-CSDN博客docker 容器里bash: vim: command not foundhttps://blog.csdn.net/longfeng995/article/details/130558108

偷偷的告诉你们一个秘密:因为我们 apt-get update 出现了异常,所以上面这篇文章,最后也是执行失败。。。。

那怎么办?无解啦!!!

这时候,我突然想到,咱们不是可以在 母机 中,直接复制文件到容器里的嘛,那么我们就:

在我们本地,先创建一个文件,内容写好,然后复制到容器里替换掉就可以啦。

首先,退出容器,在我们本地创建一个文件:resolv.conf

内容为:

nameserver 127.0.0.11
options ndots:0

nameserver 223.5.5.5  
nameserver 223.6.6.6

然后执行下面这段命令:

docker cp resolv.conf 容器名称:/tmp

注意事项:

  1. resolv.conf,文件的路径,我这里直接使用,是因为我命令行 是这个文件一样的路径,如果你的命令行和这个文件不在同一个目录下,你就得这样,参考:/d/docker/resolv.conf
  2. 容器名称,得改成你的"容器名称",或者"容器ID"

然后我们再进入容器,去到 /tmp 目录

cd /tmp/

ls

就能看到 resolv.conf 文件存在这里了,然后再看看内容:

cat resolv.conf

nameserver 127.0.0.11
options ndots:0

nameserver 223.5.5.5
nameserver 223.6.6.6

输出的内容,和我们本地是一样的,那么ok 继续!!

我们需要将这个文件替换原来的,执行下面这个命令:

cp resolv.conf /etc/resolv.conf

替换后,我们再查看一下试试:

cat /etc/resolv.conf

输出的内容,如果和上面是一样的,那么我们就可以回到最开始的命令

再执行试一下:(这次过程可能稍微较长了,也可能是因为网络原因,我这边更新蛮久的)

apt-get update

Reading package lists... Done

最后输出以上内容,那就成功了,太感动了。

这时候,我们就可以退回第一步,安装依赖!

apt-get install -y libfreetype6-dev libjpeg62-turbo-dev libpng-dev

最后,只要没输出 ERR 这类错误,或者 W 开头的警告,就代表成功!

第三步:安装 GD 库

然后我们再回到第一步中,执行安装 GD 库:

docker-php-ext-install gd

执行上面之后,无异常,也就代表成功!

然后我们再看一下 php 的模块:

docker安装php GD库_第2张图片

太好了,这次有 GD库了

过程太繁琐了,不过结果是好的! 

退出容器,重启容器

我们输出一下 phpinfo() 查看 GD

docker安装php GD库_第3张图片

nice,存在!

然后这时候又出现问题,人家这套商城代码,还是会 报错,然后我就找到异常,毕竟 前端控制台里,就只给了一个 500

我是完全不懂,为什么错误,然后我就找到了这个执行的地方

docker安装php GD库_第4张图片

哼!没有这个方法 imagettftext()

阿巴阿巴....

说实话,到这一步 我有一点疲惫了。。。

最后还是想着,咬咬牙 来吧,都到这一步了,就差一步了,就修成正果了!

翻阅各类资料,最后找到了。

我们重新进入容器,安装一些扩展

apt install libjpeg62-turbo-dev libfreetype6-dev -y

su -c "docker-php-ext-configure gd --enable-gd --with-freetype --with-jpeg"

su -c "docker-php-ext-install gd"

依次执行上面的命令即可。

再退出容器,重启容器

输出 phpinfo() 看看

docker安装php GD库_第5张图片

可以看到,和上一次相比,多了几个。

然后我们再尝试一下,这次是否还有问题

docker安装php GD库_第6张图片

终于,终于,终于,我快哭了。

你可能感兴趣的:(docker,PHP,docker,php,GD库)