Reputation: 896
On calling the function imagettfbbox(), I'm getting the error
Fatal error: Uncaught Exception: Function "imagettfbbox" does not exist: check your FreeType installation in...
I understand from many sources, including other stackoverflow questions and PHP manual that I need to compile PHP with freetype support.
My challenge is I do not know exactly how to go about this. Manual says:
To enable support for FreeType 2 add --with-freetype-dir=DIR
Where is this flag to be set?
More importantly, how do I go from my existing set up (detailed following) to this stage?
Set-up (running in a container built off the php7.3.33-apache official image)
Apache2 and PHP7.3
gd is installed, showing in phpinfo as follows:
GD Support enabled/
GD Version bundled (2.1.0 compatible)/
GIF Read Support enabled/
GIF Create Support enabled/
PNG Support enabled/
libPNG Version 1.6.37/
WBMP Support enabled/
XBM Support enabled
/usr/include/freetype2 folder exists and under it, freetype folder and ft2build.h
a var_dump of gd_info() yields the following:
["GD Version"]=> string(26) "bundled (2.1.0 compatible)"
["FreeType Support"]=> bool(false)
["GIF Read Support"]=> bool(true)
["GIF Create Support"]=> bool(true)
["JPEG Support"]=> bool(false)
["PNG Support"]=> bool(true)
["WBMP Support"]=> bool(true)
["XPM Support"]=> bool(false)
["XBM Support"]=> bool(true)
["WebP Support"]=> bool(false)
["BMP Support"]=> bool(true)
["JIS-mapped Japanese Font Support"]=> bool(false)
In essence, my PHP is pre-compiled. How do I replace this with my own re-compilation as the manual seems to be saying.
Upvotes: 1
Views: 1290
Reputation: 101
The problems are known but they do not provide a satisfactory solution for both mine and your cases:
[1] freetype-config issues in Ubuntu 20.04: https://github.com/mapnik/mapnik/issues/4152
[2] gd issues with php-7.3 and Ubuntu 20.04:
https://github.com/docker-library/php/issues/865#issuecomment-511163936
If you're running PHP with Docker, the link [2] provides an elegant solution to this problem, which I believe is the best one.
However, given your perplexities, the previously mentioned thread is not suited to your situation.
I've found a solution:
Obtain a copy of freetype-config from the provided link: https://gist.github.com/kaisersource/77ecb5979e05bd51c7f4994b8f99337d
Copy the script in a directory that contains executable programs e.g. /usr/local/bin
Download the PHP 7.3 source code from the official website https://www.php.net/distributions/php-7.3.33.tar.bz2 and compile it from source.
Unzip the package and navigate to the folder that contains the source code
Configure the build by running the following command: ./configure [your additional flags] --with-freetype-dir=/usr/include/freetype2 The directory may vary depending on the operating system
Compile the source code by running the following command: make
Install PHP 7.3 by running the following command: make install
This workaround should work for php versions lower than 7.3 as well. I have also tested with php 7.2.
For versions higher than php 7.4 there shouldn't be issues as it relies on pkg-config, as you can see from the manual
https://www.php.net/manual/en/image.installation.php
Hope it helps
Upvotes: 0