Bluemagica
Bluemagica

Reputation: 5158

Detect if the FreeType PHP extension is installed on the server

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

Answers (6)

Anthony
Anthony

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

Jon
Jon

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

Norm
Norm

Reputation: 583

Use function_exists:

if (function_exists('imagettftext')) {
     imagettftext();
} else {
     // do other function
}

Hope that helps.

Upvotes: 12

BenTheDesigner
BenTheDesigner

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

Matt Gibson
Matt Gibson

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

Thariama
Thariama

Reputation: 50832

A first somewhat complicated approach:

call php_info() and search/parse the result for freetype

Upvotes: 1

Related Questions