• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

docker安装php GD库

武飞扬头像
龙枫995
帮助8

故事是这样的:

公司采购了一套商城源码,使用的是 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

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

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

那怎么办?无解啦!!!

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

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

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

内容为:

  1.  
    nameserver 127.0.0.11
  2.  
    options ndots:0
  3.  
     
  4.  
    nameserver 223.5.5.5
  5.  
    nameserver 223.6.6.6

然后执行下面这段命令:

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

注意事项:

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

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

  1.  
    cd /tmp/
  2.  
     
  3.  
    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()

阿巴阿巴....

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

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

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

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

  1.  
    apt install libjpeg62-turbo-dev libfreetype6-dev -y
  2.  
     
  3.  
    su -c "docker-php-ext-configure gd --enable-gd --with-freetype --with-jpeg"
  4.  
     
  5.  
    su -c "docker-php-ext-install gd"

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

再退出容器,重启容器

输出 phpinfo() 看看

学新通

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

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

学新通

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

这篇好文章是转载于:编程之路

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 编程之路
  • 本文地址: /boutique/detail/tanhhfkagh
系列文章
更多 icon
同类精品
更多 icon
继续加载