Установка пакетов
Для начала установим недостающие пакеты
sudo apt install libfreetype6-dev libfreetype6
Очистка
Перед сборкой обязательно производим очистку
sudo make clean
В противном случае GD может не собраться с FreeType.
Конфигурация
Исправим файл
configure.sh
Добавив в него опцию
--with-freetype
В результате наш файл примет вид:
./configure --with-config-file-path=/etc/php/php7.4 \
--sysconfdir=/etc/php/php7.4 \
--enable-mysqlnd \
--with-pdo-mysql \
--with-pdo-mysql=mysqlnd \
--with-pdo-pgsql=/usr/bin/pg_config \
--enable-bcmath \
--enable-fpm \
--with-fpm-user=www-data \
--with-fpm-group=www-data \
--enable-mbstring \
--enable-phpdbg \
--enable-shmop \
--enable-sockets \
--enable-sysvmsg \
--enable-sysvsem \
--enable-sysvshm \
--with-zlib \
--with-curl \
--with-pear \
--with-openssl \
--enable-pcntl \
--enable-gd \
--with-jpeg \
--with-mysqli \
--with-readline \
--with-freetype
Запустим конфигурирование:
./configure.sh
Если конфигурирование не выявило ошибок, то мы получим сообщение:
+--------------------------------------------------------------------+
| License: |
| This software is subject to the PHP License, available in this |
| distribution in the file LICENSE. By continuing this installation |
| process, you are bound by the terms of this license agreement. |
| If you do not agree with the terms of this license, you must abort |
| the installation process at this point. |
+--------------------------------------------------------------------+
Thank you for using PHP.
Запустим сборку и установку
sudo make install
Перезапустим Php-fpm
sudo systemctl restart php-7.4-fpm.service
Откроем нашу тестовую страницу:
http://192.168.1.42:9999/test.php
Поддержка FreeType активирована
Тестируем поддержку FreeType в PHP 7.4
Давайте проверим работоспособность FreeType в PHP 7.4.
Создадим файл
testimage.php
с содержимым:
<?php
$img = imagecreatetruecolor(500, 300);
$white = imagecolorallocate($img, 255, 255, 255);
$black = imagecolorallocate($img, 0, 0, 0);
imagefilledrectangle($img, 0, 0, 500, 300, $white);
$font = "NotoSansCJK-Regular.ttc";
imagealphablending($img, true);
$text = "Тест: 日本語 金 水 木 火 土";
imagettftext($img, 22, 0, 0, 100, $black, $font, $text);
imagestring($img, 22, 0, 15, "regular text", $black);
imagepng($img, "./image.png");
?>
<img src="/image.png">
Скачаем архив со шрифтом
https://noto-website-2.storage.googleapis.com/pkgs/NotoSerifCJK-Regular.ttc.zip
Распакуем и скопируем файл
NotoSansCJK-Regular.ttc
В папку с файлом
testimage.php
Откроем в браузере:
http://192.168.1.42:9966/testimage.php
У нас получится:
Таким образом мы можем выводить как русский текст, так и текст на любом другом языке!
Заключение
Сегодня мы пересобрали PHP 7.4 под Astra Linux 2.21 для работы с FreeType в GD.
Установили недостающие пакеты.
Очистили папку с исходным кодом.
Произвели конфигурирование PHP.
Собрали и установили новую версию PHP.
Написали тестовый скрипт использующий FreeType для вывода текста на картинке.