Попытка добавить freetype в php-gd в официальном образе Docker

Я пытаюсь добавить некоторые функции в установку 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.

ИЗДАНИЕ (РЕШЕНИЕ):

После перекомпиляции я нашел лучшее решение в этом посте:

решено! Проблемы с Docker + PHP7 + GD, приводящие к вызову неопределенной функции imagecreatefromjpeg()

Поэтому я просто добавил:

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

person otaviofcs    schedule 08.03.2018    source источник
comment
Возможно, вы можете создать Dockerfile, начать с образа php:7.1.15-fpm-jessie, а затем добавить RUN apt-get update RUN apt-get install php-gd или что-то в этом роде. У меня это сработало, но при установке php5   -  person jawbonewalk    schedule 08.03.2018
comment
Уже сделал это. Но стандартный скомпилированный GD, который поставляется с изображением, не поддерживает JPEG, .... Поэтому я выясняю, что мне нужно перестроить   -  person otaviofcs    schedule 08.03.2018
comment
@jawbonewalk, я собираюсь использовать другой подход. Вместо того, чтобы пытаться использовать FROM 7.1.15-fpm-jessie, я модифицирую 7.1.15-fpm-jessie Dockerfile, чтобы перекомпилировать php с JPEG. github.com/docker-library/php/blob/   -  person otaviofcs    schedule 08.03.2018


Ответы (3)


Добавьте это в свой 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

Меня устраивает.

person Dennis Schaffer    schedule 26.06.2018
comment
Опция Looks --enable-gd-native-ttf сейчас недоступна - person Francis.TM; 26.12.2018
comment
Просто хотел отметить, что больше нет необходимости в --enabled-gd-native-ttf, как согласно php справочная страница по gd, неэффективна с PHP 5.5.0; удален с PHP 7.2.0. - person bakavic; 06.12.2019
comment
Это сработало после того, как я удалил --enable-gd-native-ttf. - person Ariful Haque; 17.02.2020
comment
Для тех, кто находит эту страницу через Google, для PHP 7.4 некоторые параметры были удалены, вы должны использовать: RUN docker-php-ext-configure gd --with-jpeg --with-freetype RUN docker-php-ext-install gd - person Laniax; 19.04.2020
comment
Я скоро попрощаюсь с этим языком, хотя много лет работаю на php. - person Jeffrey K; 02.06.2020

для меня с php7.3 удалите --enable-gd-native-ttf, если у меня работает

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

RUN docker-php-ext-install gd
person Hoàng Huỳnh Nhật    schedule 29.05.2020

После долгих поисков решения этой проблемы я нашел эти настройки и отлично работает.

FROM php:7.2-fpm
RUN apt-get update && apt-get install -y \
        libfreetype6-dev \
        libjpeg62-turbo-dev \
        libpng-dev \
    && docker-php-ext-install -j$(nproc) iconv \
    && docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ \
    && docker-php-ext-install -j$(nproc) gd

https://forums.docker.com/t/problems-installing-gd-on-php7-2-with-docker-docker-version-18-09-7-build-2d0083d/78400/2

person Andrés Castillo    schedule 03.08.2021
comment
Привет спасибо. Используя 7.2, я также смог скомпилировать. Но на тот момент была несовместимость кода с версией 7.2, которую уже исправили. - person otaviofcs; 04.08.2021