docker安装php GD库

8 篇文章 0 订阅

故事是这样的:

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

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

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

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

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

发现,确实没有 gd 库。

那好吧,咱们开始安装 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 foundicon-default.png?t=N7T8https://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 的模块:

太好了,这次有 GD库了

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

退出容器,重启容器

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

nice,存在!

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

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

哼!没有这个方法 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() 看看

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

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

某一次又接触到 fastAdmin 框架,也使用了验证码,我按照上面的流程时,但一直无法使用,且会报错:

Call to undefined function think\captcha\imagettftext()

要解决这个问题,需要在容器里,执行以下命令安装GD库扩展:

apt-get update && apt-get install -y 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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值