Пересборка 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-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