Найти в Дзене
Мастерская Кода

PHP 7.4 установка GD с поддержкой JPEG формата

В процессе работы, столкнулся с тем, что по умолчанию в контейнере, PHP не поддерживает JPEG. При попытке изменить размер вылетала ошибка imagecreatefromstring(): no jpeg support in this php build Проверяем. JPEG не поддерживается. php -r 'print_r(gd_info());'
Array
(
[GD Version] => bundled (2.1.0 compatible)
[FreeType Support] =>
[GIF Read Support] => 1
[GIF Create Support] => 1
[JPEG Support] =>
[PNG Support] => 1
[WBMP Support] => 1
[XPM Support] =>
[XBM Support] => 1
[WebP Support] =>
[BMP Support] => 1
[TGA Read Support] => 1
[JIS-mapped Japanese Font Support] =>
) Сразу зашел на страницу на докерхабе https://hub.docker.com/_/php Там нашел пример FROM php:7.4-fpm
RUN apt-get update && apt-get install -y \
libfreetype6-dev \
libjpeg62-turbo-dev \
libpng-dev \
&& docker-php-ext-configure gd --with-freetype --with-jpeg \
&& docker-php-ext-install -j$(nproc) gd Буду краток. Не помогло) После небольшого гугления выяснил
Результат php -r 'print_r(gd_info());'
Результат php -r 'print_r(gd_info());'

В процессе работы, столкнулся с тем, что по умолчанию в контейнере, PHP не поддерживает JPEG.

При попытке изменить размер вылетала ошибка

imagecreatefromstring(): no jpeg support in this php build

Проверяем. JPEG не поддерживается.

php -r 'print_r(gd_info());'
Array
(
[GD Version] => bundled (2.1.0 compatible)
[FreeType Support] =>
[GIF Read Support] => 1
[GIF Create Support] => 1
[JPEG Support] =>
[PNG Support] => 1
[WBMP Support] => 1
[XPM Support] =>
[XBM Support] => 1
[WebP Support] =>
[BMP Support] => 1
[TGA Read Support] => 1
[JIS-mapped Japanese Font Support] =>
)

Сразу зашел на страницу на докерхабе https://hub.docker.com/_/php

Там нашел пример

FROM php:7.4-fpm
RUN apt-get update && apt-get install -y \
libfreetype6-dev \
libjpeg62-turbo-dev \
libpng-dev \
&& docker-php-ext-configure gd --with-freetype --with-jpeg \
&& docker-php-ext-install -j$(nproc) gd

Буду краток. Не помогло)

После небольшого гугления выяснилось, что нужно это выполнять отдельно.

RUN docker-php-ext-configure gd --enable-gd --with-freetype --with-jpeg --with-webp
RUN docker-php-ext-install -j$(nproc) gd

И тогда все работает как надо. Ссылка на коммит

Поправил так же для PHP 8.1. Посмотреть можно здесь https://github.com/imjonos/laravel-docker

Всем счастливой разработки </>

Блог
https://blog.toprogram.ru/posts/php74-gd-jpeg-support