Skip to content

Пересборка GD c поддержкой WebP и Freetype для php 7.4 на Debian и Ubuntu

Пересборка GD c поддержкой WebP и Freetype для php 7.4 на Debian и Ubuntu

Подготовительный этап

Ставим зависимости, необходимые для сборки

Для начала ставим зависимости

apt install autoconf gcc make pkg-config libgd-dev pkg-config libjpeg62-turbo-dev libtiff5-dev libturbojpeg0-dev libpng-dev libjpeg-dev libwebp-dev libfreetype6-dev libxpm-dev

Смотрим точную версию необходимой нам сборки php

Смотрим, какой точно версии php у нас на тачке, вплоть до минорной версии.

/opt/php74/bin/php  -v
# /opt/php74/bin/php  -v
PHP 7.4.3 (cli) (built: Dec 23 2019 09:25:38) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
with Zend OPcache v7.4.3, Copyright (c), by Zend Technologies

Качаем исходники именно этой версии

качаем исходники точно такой же версии(это важно)

wget https://www.php.net/distributions/php-7.4.3.tar.gz

Распаковка каталога с исходниками и переход в него

Распаковываем их

tar -vxzf  php-7.4.3.tar.gz

Переходим в распакованный каталог php-7.4.3

cd php-7.4.3

Сборка нужного модуля

Этап настройки будущей собираемого модуля

Выполняем phpize

/opt/php74/bin/phpize
Выполняем ./configure с нужными нам параметрами, обязательно указываем --with-webp и --with-freetype

./configure --with-freetype=shared,/usr --with-webp=shared,/usr --with-jpeg=shared,/usr --with-xpm=shared,/usr/X11R6 --enable-shared --with-php-config=/opt/php74/bin/php-config

Сборка модуля GD

Выполняем make для сборки

make

Выполняем установку нашего пересобранного расширения

 make install

Проверка расботоспособности модуля и его возможностей

Проверяем, что у нас получилось

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

Как видно, всё получилось.

Лочим пакет php, чтобы он не обновлялся, а то наш GD слетит

apt-mark hold isp-php73

Проверяем

apt-mark showhold

https://github.com/docker-library/php/issues/931 https://github.com/docker-library/php/issues/912#issuecomment-559918036