问题
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.
回答1:
Use function_exists:
if (function_exists('imagettftext')) {
imagettftext();
} else {
// do other function
}
Hope that helps.
回答2:
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.
回答3:
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');
回答4:
A first somewhat complicated approach:
call php_info() and search/parse the result for freetype
回答5:
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.
回答6:
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.
来源:https://stackoverflow.com/questions/4594189/detect-if-the-freetype-php-extension-is-installed-on-the-server