Why am I getting the error PHP Fatal error: Call to undefined function imagettftext()
on line 29?
For a Docker container with an Apache 7.3 , the following is working for me:
FROM php:7.3.10-apache
RUN apt-get install -y libpng-dev libjpeg-dev libfreetype6-dev \
&& docker-php-ext-configure gd \
--with-freetype-dir=/usr/include/freetype2 \
--with-png-dir=/usr/include \
--with-jpeg-dir=/usr/include \
&& docker-php-ext-install gd
It's basically a cleaned up version as provided by Alfred Huang - without mcrypt
and mbstring
.
For a Docker container with PHP 7.4, use these commands to install the extension:
docker-php-ext-configure gd --with-freetype
docker-php-ext-install gd
Using the previous approach results in:
configure: error: unrecognized options: --with-freetype-dir
Relevant comment.
Just recompile extension gd.so, under folder php/ext/gd
./configure --with-php-config=/usr/local/php5/bin/php-config --with-freetype-dir=/usr/ --enable-gd-native-ttf
I solve the same issue on my docker php:7-fpm
enviroment, and I post the solution here:
Dockerfile
to setup the enviroment# more Dockerfile
FROM php:fpm
RUN apt-get update && apt-get install -y \
libfreetype6-dev \
libmcrypt-dev \
libpng12-dev \
libjpeg-dev \
libpng-dev
&& docker-php-ext-install iconv mcrypt \
&& docker-php-ext-configure gd \
--enable-gd-native-ttf \
--with-freetype-dir=/usr/include/freetype2 \
--with-png-dir=/usr/include \
--with-jpeg-dir=/usr/include \
&& docker-php-ext-install gd \
&& docker-php-ext-install mbstring \
&& docker-php-ext-enable gd
# on docker host machine
docker exec -it $FPM_CONTAINER bash
>>>>
# inside the container
apt-get install -y \
libfreetype6-dev \
libmcrypt-dev \
libpng12-dev \
libjpeg-dev \
libpng-dev
docker-php-ext-configure gd \
--enable-gd-native-ttf \
--with-freetype-dir=/usr/include/freetype2 \
--with-png-dir=/usr/include \
--with-jpeg-dir=/usr/include \
&& docker-php-ext-install gd
exit
<<<<
docker restart $FPM_CONTAINER
According to the PHP manual entry for imagettftext():
This function requires both the GD library and the » FreeType library.
You must be missing one or both of the required libraries in your PHP build.