Reputation: 5158
How do I test to see if the FreeType extension is installed on a server running PHP?
I wanted to make a simple CAPTCHA system on my site, so I used imagettftext()
and it worked fine. But what if the server didn't have the FreeType library installed?
So is there a way to somehow detect FreeType library through code, and if it is not present, fall back to something like imagestring()
?
If I can't use imagettftext()
I may have to look at alternatives to draw big font text as the imagestring
max size isn't good for something like a CAPTCHA.
Upvotes: 13
Views: 17459
Reputation: 1926
This won't work for dynamic code (so not a true answer to the question) but for anyone who just want's to know if it's installed, from the command line on Linux:
php -i | grep -E "GD|FreeType"
Outputs:
GD Support => enabled
GD headers Version => 2.2.5
GD library Version => 2.2.5
FreeType Support => enabled
FreeType Linkage => with freetype
FreeType Version => 2.4.11
NOTE: On a system without it installed you'll get no output.
Upvotes: 3
Reputation: 437424
This will not be better in practice than the function_exists
solutions already posted, but the technically correct way to check is by using extension_loaded
.
Upvotes: 17
Reputation: 583
Use function_exists
:
if (function_exists('imagettftext')) {
imagettftext();
} else {
// do other function
}
Hope that helps.
Upvotes: 12
Reputation: 1984
Assuming the GD library is installed, you can detect Freetype support using the gd_info() function.
$gdinfo = gd_info();
if($gdinfo['FreeType Support']) echo 'FreeType Support Enabled';
If you need to check whether or not GD library is installed first, use extension_loaded('gd');
Upvotes: 5
Reputation: 38238
Try function_exists(), i.e.
if (!function_exists('imagettftext')) {
// No freetype library
}
You'd probably be best asking for alternatives to imagettftext as a separate question.
Upvotes: 0
Reputation: 50832
A first somewhat complicated approach:
call php_info()
and search/parse the result for freetype
Upvotes: 1