web-dev-qa-db-fra.com

Essayer d'ajouter du freetype à php-Gd dans l'image officielle de Docker

J'essaie d'ajouter quelques fonctionnalités à PHP Gd installation. J'utilise Docker PHP "Official" release comme base (php: 7.1.15- fpm-jessie).

Mon environnement de production actuel utilise CentOS, dont le module Gd est livré avec le support FreeType, JPEG et PNG, comme vous pouvez le voir dans la sortie 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

Mais cette image Docker est livrée sans support FreeType et JPEG et avec une version beaucoup plus ancienne de Gd (voir ci-dessous 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

Dois-je recompiler PHP ou juste l'extension? L'image utilise Debian Jessie.

ÉDITION (SOLUTION):

Après avoir recompilé, j'ai trouvé la meilleure solution dans ce post:

résolu! Problèmes avec Docker + PHP7 + Gd entraînant "Appel à une fonction non définie imagecreatefromjpeg ()"

J'ai donc simplement ajouté:

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

Après cela, mon phpinfo commence à montrer:

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
12
otaviofcs

Ajoutez ceci à votre Dockerfile:

RUN apt-get update && apt-get install -y libpng-dev 
RUN apt-get install -y \
    libwebp-dev \
    libjpeg62-turbo-dev \
    libpng-dev libxpm-dev \
    libfreetype6-dev

RUN docker-php-ext-configure Gd \
    --with-Gd \
    --with-webp-dir \
    --with-jpeg-dir \
    --with-png-dir \
    --with-zlib-dir \
    --with-xpm-dir \
    --with-freetype-dir \
    --enable-Gd-native-ttf

RUN docker-php-ext-install Gd

Ça marche pour moi.

10
Dennis Schaffer