【发布时间】:2018-03-08 14:09:53
【问题描述】:
我正在尝试为 PHP GD 安装添加一些功能。我使用 Docker PHP“官方”版本作为基础 (php:7.1.15-fpm-jessie)。
我目前的生产环境使用的是 CentOS,它的 GD 模块支持 FreeType、JPEG 和 PNG,你可以在 phpinfo 输出中看到:
GD Support => enabled
GD headers Version => 2.2.5
GD library Version => 2.2.5
FreeType Support => enabled
FreeType Linkage => with freetype
FreeType Version => 2.4.11
GIF Read Support => enabled
GIF Create Support => enabled
JPEG Support => enabled
libJPEG Version => 6b
PNG Support => enabled
libPNG Version => 1.5.13
WBMP Support => enabled
XPM Support => enabled
libXpm Version => 30411
XBM Support => enabled
WebP Support => enabled
Directive => Local Value => Master Value
gd.jpeg_ignore_warning => 1 => 1
但是这个 Docker 镜像没有 FreeType 和 JPEG 支持,并且带有一个更旧版本的 GD(请参阅下面的 phpinfo):
GD Support => enabled
GD Version => bundled (2.1.0 compatible)
GIF Read Support => enabled
GIF Create Support => enabled
PNG Support => enabled
libPNG Version => 1.2.50
WBMP Support => enabled
XBM Support => enabled
Directive => Local Value => Master Value
gd.jpeg_ignore_warning => 1 => 1
我需要重新编译 PHP 还是只需要重新编译扩展?该图像使用 Debian Jessie。
版本(解决方案):
重新编译后,我在这篇文章中找到了最好的解决方案:
所以我简单地补充了一句:
RUN apt-get update && apt-get install libgd3 libgd-dev && rm -rf /var/lib/apt/lists/*
RUN docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/
RUN docker-php-ext-install -j$(nproc) gd
之后我的 phpinfo 开始显示:
GD Support => enabled
GD Version => bundled (2.1.0 compatible)
FreeType Support => enabled
FreeType Linkage => with freetype
FreeType Version => 2.5.2
GIF Read Support => enabled
GIF Create Support => enabled
JPEG Support => enabled
libJPEG Version => 6b
PNG Support => enabled
libPNG Version => 1.2.50
【问题讨论】:
-
也许你可以创建一个 Dockerfile,从图像 php:7.1.15-fpm-jessie 开始,然后添加 RUN apt-get update RUN apt-get install php-gd 或类似的东西。它对我有用,但需要 php5 安装
-
已经做到了。但是图像附带的标准编译GD不支持JPEG,....所以我正在弄清楚我需要重建什么
-
@jawbonewalk,我将采取不同的方法。我没有尝试使用 FROM 7.1.15-fpm-jessie,而是修改 7.1.15-fpm-jessie Dockerfile 以使用 JPEG 重新编译 php。 github.com/docker-library/php/blob/…